【docker专栏6】详解docker容器状态转换管理命令

金歌  金牌会员 | 2022-8-26 01:23:41 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 916|帖子 916|积分 2748

docker容器有三种状态运行、停止、暂停,镜像可以创建、运行容器,镜像和容器也可以转换成tar压缩包进行存储。本文为大家介绍容器的状态转换命令及镜像创建运行容器、tar包导入导出相关的命令及使用场景。

结合下文中的命令介绍来理解上面的这张图。
一、从镜像启动容器

从docker镜像启动一个容器的语法如下,使用docker run命令。
  1. docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
复制代码
常用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端口
  1. docker run -d --name nginx-zimug -p  80:80  nginx
复制代码
示例二:如果不加-d会在Linux终端下输出容器的标准输入输出日志,当退出终端时,容器停止运行。这种模式通常不用于生产,常用于调试容器。
  1. docker run --rm --name nginx-zimug -p  80:80  nginx
复制代码
--rm参数用于容器运行时停止之后,直接删除容器,而不是让容器进入stoped状态。
示例三:-v 表示宿主机目录与容器目录的映射关系
  1. docker run -d -p 80:80 \
  2. --name nginx-prod \
  3. -v /root/nginx/html:/usr/share/nginx/html \
  4. -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  5. -v /root/nginx/logs:/var/log/nginx  nginx
复制代码
二、查看容器与日志
  1. docker ps //查看运行中running状态的容器
  2. docker ps –a //查看所有状态的容器(包含running、paused、stopped)
  3. docker container ls  //等同于docker ps
  4. docker container ls –a //等同于docker ps –a
复制代码
查看的结果如下:
  1. CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                    PORTS                               NAMES
  2. 1061ed186789   nginx     "/docker-entrypoint.…"   5 minutes ago   Up 5 minutes              0.0.0.0:80->80/tcp, :::80->80/tcp   nginx-zimug
复制代码

  • CONTAINER ID :容器ID
  • IMAGE:镜像名称
  • COMMAND:容器内部软件脚本启动命令
  • CREATED: 容器创建的时间
  • STATUS:容器的运行状态
  • PORTS: 容器与宿主机的端口映射关系
  • NAMES: 容器的名称
  1. docker logs 容器ID;   //查看容器日志标准输出
复制代码
比如nginx服务的日志如下所示:

三、进入容器内部操作系统

有的时候我们通过docker ps和docker logs的信息很难判断容器内部服务的运行情况。这个时候我们就需要进入到容器内部操作系统,使用下面的命令。
  1. docker exec -it 容器ID /bin/bash
复制代码
进入到容器内部操作系统之后,想查看什么信息,就和常规使用linux命令是一样的。退出容器使用exit命令。
四、停止容器暂停容器

通过docker ps 找到处于运行状态的容器id或容器名称
  1. docker stop 9be696a0c283 //停止正在运行容器
  2. docker container stop nginx-zimug  //停止正运行容器(ID或Names)
复制代码
执行该命令后容器进入stoped状态,不再提供服务,不占用宿主机资源。stopped状态的容器可以再次被启动。
  1. docker pause 容器名/容器ID;  //暂停容器服务
  2. docker unpause 容器名/容器ID; //恢复容器服务
复制代码
除了stop停止容器,还有一种方法是暂停容器服务,如上命令所示。被暂停的容器不再对外服务,但是仍然占用宿主机资源。这种方式并不常用!
五、启动stopped状态的容器

通过docker ps -a可以找到处于stopped状态的容器信息。使用下面命令可以让stopped状态的容器再次进入运行状态。
  1. docker start 容器名/容器ID
复制代码
不论容器处于什么状态,如果想重启容器,可以使用下面的命令。
  1. docker restart 容器名/容器ID   //重启容器(根据ID或NAMES)
复制代码
六、删除容器

如果想要删除容器,一定要让容器处于stopped状态才可以。
  1. docker rm 容器ID
复制代码
七、export与import

将容器导出为tar包,生成的是该容器的快照,复刻的是容器当前的linux系统环境
  1. docker export nginx-zimug > nginx-zimug.tar
复制代码
如下所示的命令,将tar包导入生成一个镜像,该镜像的命名名称是new-nginx-zimug
  1. docker import - new-nginx-zimug < nginx-zimug.tar
复制代码
八、commit

假设我们有这样一种场景,容器启动之后发现一个配置文件参数写错了,然后通过docker exec -it进入容器内部对配置文件进行了修改。
我们已经介绍过,一旦容器发生重启,针对容器所做的任何写操作全部丢失。那么我们为了将容器修改之后的状态保存下来,可以使用commit将容器运行时快照,保存为本机的一个镜像。
  1. docker commit -a "zimug" -m "comment" <容器ID或容器名称> <镜像名称>
复制代码
比如使用下面的命令将容器nginx-zimug保存为镜像nginx:zimug
  1. docker commit -a "zimug" -m "comment" nginx-zimug nginx:zimug
复制代码
通过docker images查看commit产生的镜像
  1. # docker images
  2. REPOSITORY        TAG       IMAGE ID       CREATED          SIZE
  3. nginx             zimug     7e4e3219870e   8 seconds ago    142MB
复制代码
九、查看容器配置及资源使用情况

查看容器配置信息,该命令会返回一个json格式信息,如网络配置、环境变量配置、端口配置、数据卷配置等信息。
  1. docker inspect <容器ID或容器名称>
复制代码
查看容器资源使用情况,使用docker stats命令,可以查看CPU使用率,内存使用率 、网络IO、磁盘IO、进程号等信息。
  1. # docker stats nginx-zimug
  2. CONTAINER ID   NAME          CPU %     MEM USAGE / LIMIT    MEM %     NET I/O     BLOCK I/O     PIDS
  3. ec6953bce17b   nginx-zimug   0.00%     1.41MiB / 990.9MiB   0.14%     656B / 0B   0B / 7.68kB   2
复制代码
使用docker top命令可以查看容器内进程信息。如下问所示,一个master进程,一个worker进程。
  1. # docker top nginx-zimug
  2. UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
  3. root                6169                6150                0                   10:27               ?                   00:00:00            nginx: master process nginx -g daemon off;
  4. 101                 6217                6169                0                   10:27               ?                   00:00:00            nginx: worker process
复制代码
字母哥博客:zimug.com


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表