当我 运行 `docker-compose rm` 时如何忽略一些容器
how to ignore some container when i run `docker-compose rm`
我有四个容器,分别是 node
、redis
、mysql
和 data
。当我 运行 docker-compose rm
时,它将删除包含容器 data
的所有容器。我的 mysql 数据在容器中,我不想rm 容器 data
.
为什么我必须 rm 那个容器?
Sometime i must change some configure files of node and mysql and rebuild.So
,I must remove containers and start again.
我使用 google 搜索了一遍,但一无所获。
就目前情况而言,出于这个原因,您需要将数据容器保存在 Docker Compose 之外。无论如何,数据容器不应该是 运行,所以这是有道理的。
因此,要创建数据容器,请执行以下操作:
docker run --name data mysql echo "App Data Container"
echo 命令将完成并且容器将立即退出,但只要你不 docker rm
容器你仍然可以在 --volumes-from
命令中使用它,所以你可以在 Compose 中执行以下操作:
db:
image: mysql
volumes-from:
- data
只需删除 docker-compose.yml
中的任何代码即可启动数据容器。
@AdrianMouat 现在,当我使用 docker-compose (https://github.com/docker/compose/releases) 的新版本 1.2rc 启动所有容器时,我可以指定一个 *.yml 文件。就像下面这样:
文件:data.yml
data:
image: ubuntu
volumes:
- "/var/lib/mysql"
考虑您的有用答案
docker-compose 的替代方案,在 Go (https://github.com/michaelsauter/crane) 中,让您创建容器组——包括覆盖 default 组,以便重建应用程序时可以忽略数据容器。
假设您有一个 "crane.yaml" 包含以下容器和组:
containers:
my-app:
...
my-data1:
...
my-data2:
...
groups:
default:
- "my-app"
data:
- "my-data1"
- "my-data2"
您可以构建一次数据容器:
# 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 构建,您也必须指定一个 "image" —— 当不拉取时,这是名称 docker 将在本地提供图像!另请注意,容器名称是全局的,并且不像在 docker-compose.
中那样以文件夹名称为前缀
请注意,crane 至少存在一个主要缺陷:它会简单地忽略放错位置或拼写错误的字段!这使得调试 docker-compose yaml 变得更加困难。
我有四个容器,分别是 node
、redis
、mysql
和 data
。当我 运行 docker-compose rm
时,它将删除包含容器 data
的所有容器。我的 mysql 数据在容器中,我不想rm 容器 data
.
为什么我必须 rm 那个容器?
Sometime i must change some configure files of node and mysql and rebuild.So ,I must remove containers and start again.
我使用 google 搜索了一遍,但一无所获。
就目前情况而言,出于这个原因,您需要将数据容器保存在 Docker Compose 之外。无论如何,数据容器不应该是 运行,所以这是有道理的。
因此,要创建数据容器,请执行以下操作:
docker run --name data mysql echo "App Data Container"
echo 命令将完成并且容器将立即退出,但只要你不 docker rm
容器你仍然可以在 --volumes-from
命令中使用它,所以你可以在 Compose 中执行以下操作:
db:
image: mysql
volumes-from:
- data
只需删除 docker-compose.yml
中的任何代码即可启动数据容器。
@AdrianMouat 现在,当我使用 docker-compose (https://github.com/docker/compose/releases) 的新版本 1.2rc 启动所有容器时,我可以指定一个 *.yml 文件。就像下面这样:
文件:data.yml
data:
image: ubuntu
volumes:
- "/var/lib/mysql"
考虑您的有用答案
docker-compose 的替代方案,在 Go (https://github.com/michaelsauter/crane) 中,让您创建容器组——包括覆盖 default 组,以便重建应用程序时可以忽略数据容器。
假设您有一个 "crane.yaml" 包含以下容器和组:
containers:
my-app:
...
my-data1:
...
my-data2:
...
groups:
default:
- "my-app"
data:
- "my-data1"
- "my-data2"
您可以构建一次数据容器:
# 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 构建,您也必须指定一个 "image" —— 当不拉取时,这是名称 docker 将在本地提供图像!另请注意,容器名称是全局的,并且不像在 docker-compose.
中那样以文件夹名称为前缀请注意,crane 至少存在一个主要缺陷:它会简单地忽略放错位置或拼写错误的字段!这使得调试 docker-compose yaml 变得更加困难。