docker restart、start、stop与容器文件系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker restart、start、stop与容器文件系统相关的知识,希望对你有一定的参考价值。

参考技术A 大概是在2016/10前后,我们部门使用docker一段时间后偶尔会出现docker exec ... 无法进入容器的问题,环境为centos7.2、docker1.12.6,docker存储引擎为devicemapper,经过排查发现容器对应的文件系统已经umount,且发现开发同学用了大量的docker restart ... 操作。于是产生docker restart导致容器文件系统umount的疑问,后面对docker restart、start、stop三个命令与容器文件系统关系做了研究,以下是研究的记录。

通过docker run启动一个容器后,docker会同时挂载该容器的内存文件系统与容器的根文件系统(rootfs),比如

若容器的根文件系统(rootfs)umount,执行 docker exec -it xxx /bin/bash or /bin/sh会触发异常:

同时执行 docker restart xxx会触发异常:

分别查看docker restart、start、stop三个命令的debug信息,这里的实践环境为:centos7.2、docker1.12.6、存储引擎(storage-driver):devicemapper、镜像:nginx:1.12

通过上面的日志输出可以了解到

分析发现,docker restart命令并不是stop、start两个命令的顺序叠加,docker restart操作并不涉及容器文件系统的处理,开始怀疑的由于docker restart操作导致容器的文件系统处于umount状态此处没有找到证据,但为了保证容器的根文件系统与内存系统mount的正确性,推荐对一个容器的重启使用docker stop xxx 然后 docker start xxx,而非docker restart xxx。

32-Docker-常用命令详解-docker start/stop/restart

docker start/stop/restart


前言

  • 本篇来学习docker start/stop/restart命令

docker start

  • 作用:启动一个或多个已经被停止的容器

语法格式

docker start [OPTIONS] CONTAINER [CONTAINER...]

使用示例

  • 启动单个容器
  • 启动所有容器
docker start $(docker ps -a -q)

docker stop

  • 作用:停止一个运行中的容器

语法格式

docker stop [OPTIONS] CONTAINER [CONTAINER...]

使用示例

  • 停止单个容器
  • 停止所有容器
docker stop $(docker ps -a -q)

docker restart

  • 作用:重启容器

使用示例

docker restart [OPTIONS] CONTAINER [CONTAINER...]

使用示例

  • -t : 杀死容器之前等待停止的秒数(默认为10)

  • 重启所有容器
docker restart $(docker ps -a -q)

以上是关于docker restart、start、stop与容器文件系统的主要内容,如果未能解决你的问题,请参考以下文章

管理lnmp常用命令,lnmp重启,start|stop|reload|restart等命令

docker学习笔记——Docker常用命令总结

The service command supports only basic LSB actions (start, stop, restart, try-restart, reload,force

linux(restart stop status start)自动启动项目并配置日志

添加nginx为系统服务(service nginx start/stop/restart)

生产环境中使用脚本实现tomcat start|status|stop|restart