容器是Docker 的三大核心概念之一,使应用程序运行的基础环境,下面我们就来具体讲解一下Docker容器。
所谓容器就是镜像的一个运行实例,并且带有运行时需要的可写的文件层,其中的应用程序也处于运行状态。很多人会把容器和虚拟机相混淆,虚拟机是模拟运行一整套操作系统,虚拟机模拟的东西不管应用是否使用都会存在。容器是里运行的N个应用和应用所必需的环境,也就是说应用不需要的东西,容器是不会加入的。
docker [container] create例如我们要创建ubuntu 16.04的容器,docker 命令如下:
docker create ubuntu:16.04使用 create 命令创建的容器是出于停止状态的,可以使用 start 命令来启动,start 命令将在下一小节讲解。 create 命令参数很多,包含如下3大类:
因为命令参数很多,因此这里只讲解常用的几个:
docker [container] start例如启动刚才我们创建的ubuntu容器,容器ID为 b58a44432c7b
docker start b58a44432c7b输出结果如图:

docker [container] run例如我们运行一个新ubuntu16.04 容器,并将名称命名为 new_ubuntu :
docker run --name new_ubuntu ubuntu /bin/echo '你好'执行结果如下图:

执行 run 命令会在后台执行如下操作:
注1:可以使用
docker container wait container命令来等待容器退出和查看退出的返回结果注2:某些情况下,执行 run 命令是无法正常运行,导致容器直接退出,这个时候我们可以查看推出的错误代码,下面列出常见的几种错误代码:
代码 | 说明 |
|---|---|
125 | docker daemon 执行错误 |
126 | 所指定的命令无法执行 |
127 | 无法找到容器内的命令 |
docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1;done;"运行命令后结果如下

docker [container] logs这个命令常用的参数如下:
例如查看刚才创建的ubuntu16.04的容器的日志:
docker logs b58a44432c7bdocker [container] restart例如重启刚才创建的ubuntu16.04 容器,可以这么做:
docker restart b58a44432c7b执行结果如下:

docker [container] pause例如暂停刚才创建的ubuntu16.04 这个容器,可以这么做:
docker pause b58a44432c7b
docker [container] stop [-t=10]我们将刚才创建的ubuntu16.04 容器在20秒后彻底终止掉,可以这么做:
docker stop -t=20 b58a44432c7b执行结果如下:

进入容器docker 官方推荐使用 attach 和 exec 命令
docker [container] attach常用参数有如下几个:
我们进入ubuntu16.04容器:
docker attach --no-stdin b58a44432c7b运行结果如下:

docker [container] exce该命令参数有如下几个:
我们进入刚才创建的ubuntu16.04:
docker exec -it b58a44432c7b /bin/bash运行结果如下:

删除命令比较简单,可以使用 rm 命令,命令语法如下:
docker [container] rmrm 命令主要参数如下:
我们这里删除正在运行的ubuntu16.04 容器:
docker rm -f b58a44432c7b执行结果如下:

注:强行删除一个正在运行中的容器,docker 会先发送SIGKILL给容器,终止容器运行,然后强行删除。
当我们将一个容器从一个地方迁移到另一个地方往往需要导入导出。
docker [container] -o export-o 表示要到将容器导出的位置
例如将ubuntu16.04 容器导出到 /etc/test/ub.tar
docker export -o /etc/test/test.tar 0daa01b513c6执行结果如图:

docker [container] import -c-c 代表容器tar文件的位置
下面我们导入刚才导出的容器:
docker import /etc/test/test.tar运行结果如下:

docker [container] ps [-a]-a 代表查看所有容器,如果不加该参数,则代表之查看运行中的容器。
我们来查看一下所有的容器的命令:
docker ps -a运行结果如下:

docker container inspect现在查看ubuntu16.04 容器的详情:
docker container inspect 0daa01b513c6执行结果如下:

docker [container] top例如我们查看容器 ubuntu16.04 中的进程信息:
docker top 08a3ebe39b2e
docker [container] stats该命令常用参数如下:
统计ubuntu16.04 的资源统计信息:
docker stats 08a3ebe39b2e执行结果如下:

3764046492)]
docker [container] stats该命令常用参数如下:
统计ubuntu16.04 的资源统计信息:
docker stats 08a3ebe39b2e执行结果如下: [外链图片转存中…(img-37m1XXMn-1563764046493)]