- 一、从镜像启动容器
- 二、查看容器与日志
- 三、进入容器内部操作系统
- 四、停止容器暂停容器
- 五、启动stopped状态的容器
- 六、删除容器
- 七、export与import
- 八、commit
- 九、查看容器配置及资源使用情况
docker容器有三种状态运行、停止、暂停,镜像可以创建、运行容器,镜像和容器也可以转换成tar压缩包进行存储。本文为大家介绍容器的状态转换命令及镜像创建运行容器、tar包导入导出相关的命令及使用场景。
结合下文中的命令介绍来理解上面的这张图。
一、从镜像启动容器
从docker镜像启动一个容器的语法如下,使用docker run
命令。
「常用options说明」,docker create
与docker run
命令参数几乎一致,只是docker run
创建并运行容器,docker create
只创建(可以docker ps -a
查看到)不运行容器。
option | 作用 |
-d | 守护进程,后台运行该容器 |
-v | 目录映射,容器目录挂载到宿主机目录,格式: |
-p | 指定端口映射,格式: |
-P | 随机端口映射,容器内部端口随机映射到主机的端口 |
--name nginx-zimug | 容器名字nginx-zimug |
-m, --memory bytes | 设置容器使用内存最大值 |
-h, --hostname string | 指定容器的 hostname |
--dns 8.8.8.8 | 指定容器 dns 服务器8.8.8.8 |
-e JAVA_HOME="路径" | 设置环境变量,如JAVA_HOME |
--rm | 容器退出时,删除容器及容器目录 |
「示例一」:在后台(-d)运行一个名称(--name)为nginx-zimug的容器,将容器的80端口映射到宿主机80端口
「示例二」:如果不加-d
会在Linux终端下输出容器的标准输入输出日志,当退出终端时,容器停止运行。这种模式通常不用于生产,常用于调试容器。
--rm
参数用于容器运行时停止之后,直接删除容器,而不是让容器进入stoped状态。「示例三」:-v
表示宿主机目录与容器目录的映射关系
二、查看容器与日志
查看的结果如下:
- CONTAINER ID :容器ID
- IMAGE:镜像名称
- COMMAND:容器内部软件脚本启动命令
- CREATED: 容器创建的时间
- STATUS:容器的运行状态
- PORTS:容器与宿主机的端口映射关系
- NAMES:容器的名称
比如nginx服务的日志如下所示:
三、进入容器内部操作系统
有的时候我们通过docker ps
和docker logs
的信息很难判断容器内部服务的运行情况。这个时候我们就需要进入到容器内部操作系统,使用下面的命令。
进入到容器内部操作系统之后,想查看什么信息,就和常规使用linux命令是一样的。退出容器使用exit命令。
四、停止容器暂停容器
通过docker ps
找到处于运行状态的容器id或容器名称
执行该命令后容器进入stoped状态,不再提供服务,不占用宿主机资源。stopped状态的容器可以再次被启动。
除了stop停止容器,还有一种方法是暂停容器服务,如上命令所示。被暂停的容器不再对外服务,但是仍然占用宿主机资源。这种方式并不常用!
五、启动stopped状态的容器
通过docker ps -a
可以找到处于stopped状态的容器信息。使用下面命令可以让stopped状态的容器再次进入运行状态。
不论容器处于什么状态,如果想重启容器,可以使用下面的命令。
六、删除容器
如果想要删除容器,一定要让容器处于stopped状态才可以。
七、export与import
将容器导出为tar包,生成的是该容器的快照,复刻的是容器当前的linux系统环境
如下所示的命令,将tar包导入生成一个镜像,该镜像的命名名称是new-nginx-zimug
八、commit
假设我们有这样一种场景,容器启动之后发现一个配置文件参数写错了,然后通过docker exec -it
进入容器内部对配置文件进行了修改。我们已经介绍过,一旦容器发生重启,针对容器所做的任何写操作全部丢失。那么我们为了将容器修改之后的状态保存下来,可以使用commit将容器运行时快照,保存为本机的一个镜像。
比如使用下面的命令将容器nginx-zimug保存为镜像nginx:zimug
通过docker images
查看commit产生的镜像
九、查看容器配置及资源使用情况
查看容器配置信息,该命令会返回一个json格式信息,如网络配置、环境变量配置、端口配置、数据卷配置等信息。
查看容器资源使用情况,使用docker stats
命令,可以查看CPU使用率,内存使用率 、网络IO、磁盘IO、进程号等信息。
使用docker top
命令可以查看容器内进程信息。如下问所示,一个master进程,一个worker进程。
- 欢迎关注公众号:字母哥杂谈,回复003赠送本文所在专栏《docker修炼之道》的PDF成书版本。