共计 3336 个字符,预计需要花费 9 分钟才能阅读完成。
docker 容器有三种状态运行、进行、暂停,镜像能够创立、运行容器,镜像和容器也能够转换成 tar 压缩包进行存储。本文为大家介绍容器的状态转换命令及镜像创立运行容器、tar 包导入导出相干的命令及应用场景。
联合下文中的命令介绍来了解下面的这张图。
一、从镜像启动容器
从 docker 镜像启动一个容器的语法如下,应用 docker run
命令。
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 端口
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 ps
和docker 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