Skip to content

容器的管理与使用


前文提到,容器拥有其生命周期,并与主进程互为表里。

创建容器

在容器创建前,我们需要镜像。就好比打包快递之前,我们需要被打包的物品。

docker create <image-name / imageID>

通过--name指定容器名,我们一般直接取软件名称。

docker create --name <新名称> <image-name / image-id>

在容器创建完之后,容器处于created状态

启动容器

想要启动容器,实质上是使其进入running状态。

docker start <image-name / imageID / alias> 
* alias是通过--name重命名后的新名称

通过上述指令,容器会进入running状态。

于此之外,还拥有一个一键创建和启动容器的指令

docker run --name <new name> <iage-name / imageID>

通过添加-d选项(detach),可以使其进入后台运行(与terminal分离);attach代表将容器主程序转移至前台运行(与detach形成反向操作)。

docker run --name <new name> -d <iage-name / imageID>
docker attach <iage-name / imageID>

查看容器

列出所有运行中的容器;如需列出所有容器,添加-a选项即可。

docker ps

* ps是process status的缩写

运行这条指令后,会显示一段以容器为行,以以下属性为列的信息

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
 容器唯一ID 		对应的镜像名			主程序启动命令 		 被创建的时间		      容器状态(三种)     映射的端口号           镜像别名
								(docker start就是执行这段命令)						 Created 		   暴露的端口号	  通过--name指定的别名
																			Up[time] 运行中[从开始到查看的时间]
																Exited([code])[TIME]) 结束运行([主程序退出码])[从结束到查看的时间]

停止容器

停止容器后,docker进入stopped状态——环境存在,程序停止。

docker stop <image-name / imageID / alias>

删除容器

删除后,容器进入deleted状态——容器删除,存储在 Docker 中的相关资源一并施放与删除。

如需删除运行中的容器,使用-f选项

docker rm <image-name / imageID / alias>

运行容器内程序

容器相当于对镜像以及其运行环境的封装,通过容器指定运行镜像内可用的指令自然也是可行的。

docker exec -it <image-name / imageID / alias> <instruction>
* docker exec nginx more /etc/hostname
* -i 让控制台正确识别输入流; -t 表示使用bash交互,并显示内部结果(bash功能相对于sh更为丰富,优先选择bash)

使用哲学

Docker容器的使用最佳实践是随用随删。在减少资源占用的同时,保证了版本最新。其原因主要有以下两方面:

  • 在Docker中,镜像的打包,容器的创建和使用都十分便捷和迅速 (容器的秒级相对于虚拟机的分钟级)

  • 在Docker中,对于重要的信息,使用数据卷存放 (同容器相隔离)