网站首页 > 技术文章 正文
Docker创建容器 容器常用命令
前言
容器是Docker的三大核心概念之一。简单地说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。通过这篇文章,我们来讲讲Docker容器的一些常用命令,如创建,停止,重启,暂停等等。
原创声明
本文发布于掘金号【Happyjava】。Happy的掘金地址:juejin.im/user/5cc289…,Happy的个人博客:blog.happyjava.cn。欢迎转载,但须保留此段声明。
创建容器
新建容器
命令如下:
docker create <image> 复制代码
使用create 命令创建的容器,默认处于停止状态,需要我们手动去启动容器。
新建并运行容器
命令如下:
docker run <image> 复制代码
通过run命令创建的容器,默认是会运行的。
常用参数如下:
-i 让容器的标准输入保持打开
-t 分配一个伪终端
-d 容器处于守护进程运行
--name 设置容器的名字
-p 可以映射宿主机端口至容器端口,如 -p 8080:8081 ,左边为宿主机端口,右边为容器端口
-v 可以挂在宿主机目录至容器目录,如-v /data:/tmp/data,左边为宿主机目录,右边为容器目录。
如,一条实际运行容器的命令:
docker run -it -d --name my_ubuntu -p 8088:22 -v /root/ubuntu_data:/data ubuntu:latest /bin/bash 复制代码
容器管理
查看容器列表
命令如下:
docker ps 复制代码
docker ps 是查看正在运行的容器,可以添加-a 参数,查看所有容器的信息。
停止容器
停止容器的命令:
docker stop <container_name/id> 复制代码
启动容器
docker start <container_name/id> 复制代码
重启容器
docker restart <container_name/id> 复制代码
删除容器
命令如下:
docker rm <container_id/name> 复制代码
如果是正在运行的容器,会提示删除失败,可以通过 -f 参数强制删除。例如,删除正在运行的 my_ubuntu 容器:
docker rm -f my_ubuntu 复制代码
容器日志
可以通过如下命令查看容器的日志:
docker logs <id/name> 复制代码
暂停容器
docker pause <id/name> 复制代码
通过docker ps 命令可以查看到容器的状态
恢复暂停的容器
docker unpause <id/name> 复制代码
进入容器
如果我们创建容器时,使用了 -d 参数,那么容器就会在后台运行。那么,我们可以通过 docker attach 命令和 docker exec 命令连接到容器。
docker attach命令
docker attach 命令使用如下:
docker attach <container_name/id> 复制代码
如,我这里连接创建的名为 my_ubuntu 的容器。
docker attach my_ubuntu 复制代码
进入容器后,其实就跟ssh登录服务器效果似乎一样的:
docker attach连接容器,有一个致命的缺点,那就是当多个窗口同时attach到同一个容器时,所有窗口都会同步显示,当某个窗口阻塞了,那么所有的窗口都会被阻塞掉。例如,我通过两个终端attach到这个my_ubuntu容器,所有的操作都会被同步:
我在一个窗口输入东西,另外一个窗口也会同步。
也是因为这样,所以attach命令是比较少用的。
docker exec 命令
docker exec 本质上不是连接容器,而是在容器中执行命令,其用法如下:
docker exec -it <container_name/id> <exec> 复制代码
其中<exec>是需要执行的命令,如在my_ubuntu容器下执行 /bin/bash 命令:
docker exec -it my_ubuntu /bin/bash 复制代码
执行结果:
/bin/bash 这个命令,其实就是运行一个bash终端,所以我们就可以通过在容器中执行 /bin/bash命令来连接容器。
查看容器变更
容器也是支持查看变更的内容的,命令如下:
docker diff <name/id> 复制代码
如,查看my_ubuntu的变更:
有三个符号,它们分别是:
提交容器
Docker也可以像git一样,可以把变动提交为新的镜像。命令如下:
docker commit <container_id/name> repo/name:tag 复制代码
如,我把本地的my_ubuntu提交:
docker commit my_ubuntu test/ubuntu:personal 复制代码
然后查看镜像:
提交后的镜像,可以推送到仓库上,方便测试部署等。
总结
容器作为Docker的三大核心概念之一,其有很多操作,本文也难以一一列举,只是列举出了本人认为比较常用的一些命令。
猜你喜欢
- 2024-09-12 64.手把手使用Docker
- 2024-09-12 kubernetes基础知识之docker容器和镜像
- 2024-09-12 docker 安装MongoDB(docker 安装mongodb4.4.4)
- 2024-09-12 Docker入门与实践:容器操作方法详细介绍
- 2024-09-12 Docker实战四之Docker 容器使用(docker 容器运行命令)
- 2024-09-12 【docker】:全面认识Docker和基本指令
- 2024-09-12 Docker 学习小总结(docker基础教程)
- 2024-09-12 运行Docker遇到权限问题应该如何处理?
- 2024-09-12 史上超全!Docker命令全集,值得收藏
- 2024-09-12 容器化学习-docker2生成镜像(docker手动生成镜像)
- 08-06中等生如何学好初二数学函数篇
- 08-06C#构造函数
- 08-06初中数学:一次函数学习要点和方法
- 08-06仓颉编程语言基础-数据类型—结构类型
- 08-06C++实现委托机制
- 08-06初中VS高中三角函数:从"固定镜头"到"360°全景",数学视野升级
- 08-06一文讲透PLC中Static和Temp变量的区别
- 08-06类三剑客:一招修改所有对象!类方法与静态方法的核心区别!
- 1522℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 650℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 527℃MySQL service启动脚本浅析(r12笔记第59天)
- 492℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 492℃启用MySQL查询缓存(mysql8.0查询缓存)
- 479℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 461℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 460℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (70)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)