我正在测试很多服务作为容器,通常通过docker-compose。
由于我是docker的新手,所以这个问题可能看起来很菜鸟。
在某个时刻,我有一个运行着的docker-compose堆栈(几个带有卷的容器)。我必须停止容器以重新使用相同的端口;我使用docker stop
命令来实现。
当我准备再次启动我的容器时,我执行了以下操作:
$ docker-compose start
Starting jenkins ... done
Starting gitlab-ce ... done
ERROR: No containers to start
我检查了容器,惊讶地发现了这个:
我检查了容器,惊讶地发现了这个:
$ docker-compose ps
Name Command State Ports
------------------------------
所以我运行了:
$ docker-compose up
Creating volume "dockerpipelinejenkins_jenkins_home" with default driver
Creating volume "dockerpipelinejenkins_gitlab_logs" with default driver
Creating volume "dockerpipelinejenkins_gitlab_data" with default driver
Creating volume "dockerpipelinejenkins_gitlab_config" with default driver
Creating dockerpipelinejenkins_jenkins_1 ... done
Creating dockerpipelinejenkins_gitlab-ce_1 ... done
Attaching to dockerpipelinejenkins_jenkins_1, dockerpipelinejenkins_gitlab-ce_1
我很震惊地发现我的数据卷被重新创建,实际上擦除了我的数据。
为什么Docker Compose会擦除这些数据卷,每次使用docker stop
停止Docker容器时都会发生吗?
docker stop
不应该擦除卷。运行docker stop
后,执行docker ps -a
。你的容器还在显示吗? - Ben Mohorcls /var/lib/docker/volumes/dockerpipeline_gitlab_config/_data
时,数据已经消失了。 - MMT