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 psdocker container ls –a //等同于docker ps –a

查看的后果如下:

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                    PORTS                               NAMES1061ed186789   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 imagesREPOSITORY        TAG       IMAGE ID       CREATED          SIZEnginx             zimug     7e4e3219870e   8 seconds ago    142MB

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

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

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

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

# docker stats nginx-zimugCONTAINER ID   NAME          CPU %     MEM USAGE / LIMIT    MEM %     NET I/O     BLOCK I/O     PIDSec6953bce17b   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                CMDroot                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