当我运行`docker-compose rm`时如何忽略一些容器
我有四个容器是node
, redis
, mysql
和data
。 当我运行docker-compose rm
,它将删除所有包含容器data
的容器.my的数据是在容器中,而我不想rm容器data
。
为什么我必须装那个容器?
有时我必须更改一些configuration文件的节点和MySQL和重build。所以,我必须删除容器,并重新启动。
我再次search使用谷歌一无所获。
按照现状,您需要将数据容器保留在Docker Compose之外。 数据容器不应该运行,所以这是有道理的。
所以,要创build你的数据容器做一些事情:
docker run --name data mysql echo "App Data Container"
echo命令将完成,容器将立即退出,但是只要你没有将--volumes-from
容器中,你仍然可以在--volumes-from
命令中使用它,所以你可以在Compose中做以下的事情:
db: image: mysql volumes-from: - data
只需要移除docker-compose.yml
中的任何代码来启动数据容器。
在Go( https://github.com/michaelsauter/crane )中,可以使用docker-compose的替代方法创buildcontianer组,包括覆盖默认组,以便在重build应用程序时可以忽略数据容器。
鉴于你有一个“crane.yaml”与以下容器和组:
containers: my-app: ... my-data1: ... my-data2: ... groups: default: - "my-app" data: - "my-data1" - "my-data2"
您可以构build一次您的数据容器:
# create your data-only containers (safe to run several times) crane provision data # needed when building from Dockerfile crane create data # build/start your app. crane lift -r # similar to docker-compose build && docker compose up # Force re-create off your data-only containers... crane create --recreate data
PS! 与docker-compose不同的是,即使从Dockerfile构build,你也必须指定一个“图像” – 当不拉的时候,这个名字是docker会给本地的图像! 另外请注意,容器名称是全局的,并且没有以它们在docker-compose中的文件夹名称作为前缀。
请注意,起重机至less有一个重大缺陷:它简单地忽略了错位或拼错的字段! 这使得debuggingdocker-compose yaml更加困难。
@AdrianMouat现在,我可以指定一个* .yml文件,当我启动所有容器与docker-compose的新版本1.2rc( https://github.com/docker/compose/releases )。 如下所示:
文件: data.yml
data: image: ubuntu volumes: - "/var/lib/mysql"
认为你的答案非常有用
- docker swarm和consul backend都是traefikconfiguration吗?
- 如何编写Dockerfile来更改Docker镜像中的受保护文本文件?
- jenkins – 节点作为docker集装箱
- docker-compose v3 prepend文件夹名称到networking名称
- 我可以使用Docker-Compose创build没有容器的networking
- 如何在多个私人registry中searchdocker图像
- Docker-machine:如何正确执行一个ssh命令?
- 从图像创buildDocker容器而不启动它
- 在docker中安装mysql并将mysql服务暴露给外部