容器的管理与使用
前文提到,容器拥有其生命周期,并与主进程互为表里。
创建容器
在容器创建前,我们需要镜像。就好比打包快递之前,我们需要被打包的物品。
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中,对于重要的信息,使用数据卷存放 (同容器相隔离)