当我运行`docker-compose rm`时,如何忽略一些容器

时间:2015-04-10 10:01:56

标签: docker docker-compose

我有四个noderedismysqldata的容器。当我运行docker-compose rm时,它将删除包含容器data的所有容器。我的mysql数据位于容器中,我不想使用容器data

为什么我必须装那些容器?

  

有时我必须更改node和mysql的一些配置文件并重建.So   ,我必须删除容器并重新开始。

我再次使用谷歌再搜索,什么也没得到。

3 个答案:

答案 0 :(得分:3)

事实上,出于这个原因,您需要将数据容器保留在Docker Compose之外。无论如何都不应该运行数据容器,所以这是有道理的。

因此,要创建数据容器,请执行以下操作:

docker run --name data mysql echo "App Data Container"

echo命令将完成,容器将立即退出,但只要您没有docker rm容器,您仍然可以在--volumes-from命令中使用它,这样您就可以撰写中的以下内容:

db:
  image: mysql
  volumes-from: 
     - data

只需删除docker-compose.yml中的所有代码即可启动数据容器。

答案 1 :(得分:1)

替代docker-compose,在Go(https://github.com/michaelsauter/crane)中,让您创建contianer组 - 包括覆盖默认组,以便您可以忽略您的数据重建应用时的容器。

鉴于你有一个" crane.yaml"使用以下容器和组:

https://www.youtube.com/embed/VIDEOID&playlist=VIDEOID_1,VIDEOID_2"

您可以构建一次数据容器:

containers:
    my-app:
       ...
    my-data1:
       ...
    my-data2:
       ...
groups:
    default:
        - "my-app"
    data:
        - "my-data1"
        - "my-data2"

PS!与docker-compose不同,即使从Dockerfile构建,你必须指定一个"图像" - 当没有拉动时,这就是docker将在本地提供图像的名称!另请注意,容器名称是全局的,并且没有文件夹名称的前缀,就像它们在docker-compose中一样。

请注意,起重机至少存在一个主要缺陷:它只是忽略错位或错误拼写的字段!这使得调试docker-compose yaml变得更加困难。

答案 2 :(得分:0)

@AdrianMouat现在,当我使用docker-compose(https://github.com/docker/compose/releases)的新版本1.2rc启动所有容器时,我可以指定一个* .yml文件。如下所示:

文件:data.yml

data: image: ubuntu volumes: - "/var/lib/mysql" 认为你的答案非常有用