关于java:docker专栏6详解docker容器状态转换管理命令

3次阅读

共计 3336 个字符,预计需要花费 9 分钟才能阅读完成。

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

联合下文中的命令介绍来了解下面的这张图。

一、从镜像启动容器

从 docker 镜像启动一个容器的语法如下,应用 docker run 命令。

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

罕用 options 阐明 ,docker createdocker 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 端口

docker run -d --name nginx-zimug -p  80:80  nginx

示例二 :如果不加-d 会在 Linux 终端下输入容器的规范输入输出日志,当退出终端时,容器进行运行。这种模式通常不用于生产,罕用于调试容器。

docker run --rm --name nginx-zimug -p  80:80  nginx

--rm参数用于容器运行时进行之后,间接删除容器,而不是让容器进入 stoped 状态。
示例三-v 示意宿主机目录与容器目录的映射关系

docker run -d -p 80:80 \
--name nginx-prod \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/logs:/var/log/nginx  nginx

二、查看容器与日志

docker ps // 查看运行中 running 状态的容器
docker ps –a // 查看所有状态的容器(蕴含 running、paused、stopped)docker container ls  // 等同于 docker ps
docker container ls –a // 等同于 docker ps –a

查看的后果如下:

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                    PORTS                               NAMES
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:容器的名称
docker logs 容器 ID;   // 查看容器日志规范输入

比方 nginx 服务的日志如下所示:

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

有的时候咱们通过 docker psdocker logs的信息很难判断容器外部服务的运行状况。这个时候咱们就须要进入到容器外部操作系统,应用上面的命令。

docker exec -it 容器 ID /bin/bash

进入到容器外部操作系统之后,想查看什么信息,就和惯例应用 linux 命令是一样的。退出容器应用 exit 命令。

四、进行容器暂停容器

通过docker ps 找到处于运行状态的容器 id 或容器名称

docker stop 9be696a0c283 // 进行正在运行容器
docker container stop nginx-zimug  // 进行正运行容器(ID 或 Names)

执行该命令后容器进入 stoped 状态,不再提供服务,不占用宿主机资源。stopped 状态的容器能够再次被启动。

docker pause 容器名 / 容器 ID;  // 暂停容器服务
docker unpause 容器名 / 容器 ID; // 复原容器服务

除了 stop 进行容器,还有一种办法是暂停容器服务,如上命令所示。被暂停的容器不再对外服务,然而依然占用宿主机资源。这种形式并不罕用!

五、启动 stopped 状态的容器

通过 docker ps -a 能够找到处于 stopped 状态的容器信息。应用上面命令能够让 stopped 状态的容器再次进入运行状态。

docker start 容器名 / 容器 ID

不管容器处于什么状态,如果想重启容器,能够应用上面的命令。

docker restart 容器名 / 容器 ID   // 重启容器(依据 ID 或 NAMES)

六、删除容器

如果想要删除容器,肯定要让容器处于 stopped 状态才能够。

docker rm 容器 ID

七、export 与 import

将容器导出为 tar 包,生成的是该容器的快照,复刻的是容器以后的 linux 零碎环境

docker export nginx-zimug > nginx-zimug.tar

如下所示的命令, 将 tar 包导入生成一个镜像,该镜像的命名名称是 new-nginx-zimug

 docker import - new-nginx-zimug < nginx-zimug.tar

八、commit

假如咱们有这样一种场景,容器启动之后发现一个配置文件参数写错了,而后通过 docker exec -it 进入容器外部对配置文件进行了批改。
咱们曾经介绍过,一旦容器产生重启,针对容器所做的任何写操作全副失落。那么咱们为了将容器批改之后的状态保留下来,能够应用 commit 将容器运行时快照,保留为本机的一个镜像。

docker commit -a "zimug" -m "comment" < 容器 ID 或容器名称 > < 镜像名称 >

比方应用上面的命令将容器 nginx-zimug 保留为镜像 nginx:zimug

docker commit -a "zimug" -m "comment" nginx-zimug nginx:zimug

通过 docker images 查看 commit 产生的镜像

# docker images
REPOSITORY        TAG       IMAGE ID       CREATED          SIZE
nginx             zimug     7e4e3219870e   8 seconds ago    142MB

九、查看容器配置及资源应用状况

查看容器配置信息,该命令会返回一个 json 格局信息,如网络配置、环境变量配置、端口配置、数据卷配置等信息。

docker inspect < 容器 ID 或容器名称 >

查看容器资源应用状况,应用 docker stats 命令,能够查看 CPU 使用率,内存使用率、网络 IO、磁盘 IO、过程号等信息。

# docker stats nginx-zimug
CONTAINER ID   NAME          CPU %     MEM USAGE / LIMIT    MEM %     NET I/O     BLOCK I/O     PIDS
ec6953bce17b   nginx-zimug   0.00%     1.41MiB / 990.9MiB   0.14%     656B / 0B   0B / 7.68kB   2

应用 docker top 命令能够查看容器内过程信息。如下问所示,一个 master 过程,一个 worker 过程。

# docker top nginx-zimug 
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                6169                6150                0                   10:27               ?                   00:00:00            nginx: master process nginx -g daemon off;
101                 6217                6169                0                   10:27               ?                   00:00:00            nginx: worker process

欢送关注我的布告号:字母哥杂谈,回复 003 赠送本文所在专栏《docker 修炼之道》的 PDF 版本,30 余篇精品 docker 文章。字母哥博客:zimug.com

正文完
 0