docker 撰写孤立容器警告
docker compose orphan containers warning
当你有 2 个独立的项目并且你希望它们同时工作或至少构建 运行ning docker-compose up -d
没有 --remove-orphans
标志时如何使用孤立图像当图像已经为另一个项目构建时。
docker 编写文件 1:
version: '2'
services:
applications:
image: tianon/true
volumes:
- ../../:/var/www/vhosts/project1
nginx:
build: ./images/nginx
image: project1/nginx:latest
ports:
- "80:80"
volumes_from:
- applications
networks:
appnet:
aliases:
- project1.app
- admin.project1.app
php:
image: project1/php:latest
ports:
- "7778:7778"
build:
context: ./images/php
dockerfile: Dockerfile
volumes_from:
- applications
networks:
- appnet
mysql:
image: project1/mysql:latest
build: ./images/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
volumes:
- mysqldata:/var/lib/mysql
networks:
- appnet
ports:
- "33066:3306"
workspace:
image: project1/workspace:latest
build:
context: ./images/workspace
volumes_from:
- applications
working_dir: /var/www/vhosts/project1
networks:
- appnet
networks:
appnet:
driver: "bridge"
volumes:
mysqldata:
driver: "local"
第二个docker撰写文件:
version: '2'
services:
project2_applications:
image: tianon/true
volumes:
- ../../:/var/www/vhosts/project2
project2_nginx:
build: ./images/nginx
image: project2/nginx:latest
ports:
- "8080:80"
volumes_from:
- project2_applications
networks:
project2_appnet:
aliases:
- project2.app
- admin.project2.app
project2_php:
image: project2/php:latest
ports:
- "7777:7777"
build:
context: ./images/php
dockerfile: Dockerfile
volumes_from:
- project2_applications
networks:
- project2_appnet
project2_mysql:
image: project2/mysql:latest
build: ./images/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
volumes:
- project2_mysqldata:/var/lib/mysql
networks:
- project2_appnet
ports:
- "33067:3306"
project2_workspace:
image: project2/workspace:latest
build:
context: ./images/workspace
volumes_from:
- project2_applications
working_dir: /var/www/vhosts/videosite
networks:
- project2_appnet
networks:
project2_appnet:
driver: "bridge"
volumes:
project2_mysqldata:
driver: "local"
现在,当我已经构建了 project1 并尝试为第二个项目 运行 docker-compose up -d
时,我看到警告:
WARNING: Found orphan containers (docker_workspace_1, docker_nginx_1, docker_php_1, docker_mysql_1, docker_memcached_1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans
flag to clean it up.
我假设这是因为 project1 的容器名称应该更具体,我需要添加一些前缀,就像我为 project2 所做的那样,但是 project1 正在被许多其他开发人员使用,我不想改变它。
有没有办法关闭孤儿检查?
第二件事:只是一条警告消息,但出于某种原因,在出现 compose 失败并出现错误后:
ERROR: Encountered errors while bringing up the project.
为了让它工作,我需要 运行 docker-compose up -d --remove-orphans
docker-compose
将其所在目录的名称作为默认项目名称。
您可以使用 -p
或 --project-name
设置不同的项目名称。
https://docs.docker.com/compose/reference/#use--p-to-specify-a-project-name
我遇到了类似的问题,因为我的项目都有 docker/docker-compose.yml
结构。
Compose 在内部使用项目名称(默认为项目目录的基本名称,但可以明确指定)来隔离彼此的项目。项目名称用于为项目的所有容器和其他资源创建唯一标识符。例如,如果您的项目名称是 myapp
并且它包含两个服务 db
和 web
,那么 Compose 将分别启动名为 myapp_db_1
和 myapp_web_1
的容器。
您收到 "Found orphan containers"
警告是因为 docker-compose
检测到一些容器属于另一个项目 同名 .
为了防止不同的项目相互干扰(并抑制警告),您可以使用 -p
command line option or the COMPOSE_PROJECT_NAME
environment variable. The environment variable can also be set via an environment file(默认情况下在当前工作目录中的 .env
)设置自定义项目名称。
为了以其他答案为基础,我用我的 docker 撰写项目创建了一个 .env
文件。我有许多项目都使用 docker
目录,但它们是不同的项目。
使用 docker-compose -p
有点容易出错,因此在与 docker-compose.yml
:
相同的目录中创建 .env
文件
-rw-rw-r-- 1 auser auser 1692 Aug 22 20:34 docker-compose.yml
-rw-rw-r-- 1 auser auser 31 Aug 22 20:44 .env
减轻了记住 -p
的必要开销。
在 .env
文件中,我现在可以设置 COMPOSE_PROJECT_NAME
变量:
COMPOSE_PROJECT_NAME=myproject
在 运行:
docker-compose up -d
COMPOSE_PROJECT_NAME
被替换而不使用 -p
。
docker-compose up --remove-orphans
您可以运行此命令来清理孤立容器。如警告中所述
如果孤立容器是预期的且不打算删除,您可以将 COMPOSE_IGNORE_ORPHANS
变量设置为 true。
Consise 但马上可用的来源是 here。
一种选择是将其作为一行放入 docker-compose.yml
旁边的 .env
文件中,如下所示:
COMPOSE_IGNORE_ORPHANS=True
另一个选项是传递或将其设置为环境变量。
sh:
COMPOSE_IGNORE_ORPHANS=True docker-compose up -d
或
export COMPOSE_IGNORE_ORPHANS=True
docker-compose up -d
命令:
SET COMPOSE_IGNORE_ORPHANS=True&& docker-compose up -d
powershell:
$env:COMPOSE_IGNORE_ORPHANS = 'True'; & docker-compose up -d
当您的 docker-compose 文件已更新时会发生这种情况。我在 Docker 启动时收到类似的错误,并发现另一个团队成员更新了 docker-compose.yml 作为清理的一部分。
为了解决这个问题,我使用 Docker 桌面中的删除按钮删除了 docker 组,然后重新启动它。这为我修复了错误。
当你有 2 个独立的项目并且你希望它们同时工作或至少构建 运行ning docker-compose up -d
没有 --remove-orphans
标志时如何使用孤立图像当图像已经为另一个项目构建时。
docker 编写文件 1:
version: '2'
services:
applications:
image: tianon/true
volumes:
- ../../:/var/www/vhosts/project1
nginx:
build: ./images/nginx
image: project1/nginx:latest
ports:
- "80:80"
volumes_from:
- applications
networks:
appnet:
aliases:
- project1.app
- admin.project1.app
php:
image: project1/php:latest
ports:
- "7778:7778"
build:
context: ./images/php
dockerfile: Dockerfile
volumes_from:
- applications
networks:
- appnet
mysql:
image: project1/mysql:latest
build: ./images/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
volumes:
- mysqldata:/var/lib/mysql
networks:
- appnet
ports:
- "33066:3306"
workspace:
image: project1/workspace:latest
build:
context: ./images/workspace
volumes_from:
- applications
working_dir: /var/www/vhosts/project1
networks:
- appnet
networks:
appnet:
driver: "bridge"
volumes:
mysqldata:
driver: "local"
第二个docker撰写文件:
version: '2'
services:
project2_applications:
image: tianon/true
volumes:
- ../../:/var/www/vhosts/project2
project2_nginx:
build: ./images/nginx
image: project2/nginx:latest
ports:
- "8080:80"
volumes_from:
- project2_applications
networks:
project2_appnet:
aliases:
- project2.app
- admin.project2.app
project2_php:
image: project2/php:latest
ports:
- "7777:7777"
build:
context: ./images/php
dockerfile: Dockerfile
volumes_from:
- project2_applications
networks:
- project2_appnet
project2_mysql:
image: project2/mysql:latest
build: ./images/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
volumes:
- project2_mysqldata:/var/lib/mysql
networks:
- project2_appnet
ports:
- "33067:3306"
project2_workspace:
image: project2/workspace:latest
build:
context: ./images/workspace
volumes_from:
- project2_applications
working_dir: /var/www/vhosts/videosite
networks:
- project2_appnet
networks:
project2_appnet:
driver: "bridge"
volumes:
project2_mysqldata:
driver: "local"
现在,当我已经构建了 project1 并尝试为第二个项目 运行 docker-compose up -d
时,我看到警告:
WARNING: Found orphan containers (docker_workspace_1, docker_nginx_1, docker_php_1, docker_mysql_1, docker_memcached_1) for this project. If you removed or renamed this service in your compose file, you can run this command with the
--remove-orphans
flag to clean it up.
我假设这是因为 project1 的容器名称应该更具体,我需要添加一些前缀,就像我为 project2 所做的那样,但是 project1 正在被许多其他开发人员使用,我不想改变它。
有没有办法关闭孤儿检查?
第二件事:只是一条警告消息,但出于某种原因,在出现 compose 失败并出现错误后:
ERROR: Encountered errors while bringing up the project.
为了让它工作,我需要 运行 docker-compose up -d --remove-orphans
docker-compose
将其所在目录的名称作为默认项目名称。
您可以使用 -p
或 --project-name
设置不同的项目名称。
https://docs.docker.com/compose/reference/#use--p-to-specify-a-project-name
我遇到了类似的问题,因为我的项目都有 docker/docker-compose.yml
结构。
Compose 在内部使用项目名称(默认为项目目录的基本名称,但可以明确指定)来隔离彼此的项目。项目名称用于为项目的所有容器和其他资源创建唯一标识符。例如,如果您的项目名称是 myapp
并且它包含两个服务 db
和 web
,那么 Compose 将分别启动名为 myapp_db_1
和 myapp_web_1
的容器。
您收到 "Found orphan containers"
警告是因为 docker-compose
检测到一些容器属于另一个项目 同名 .
为了防止不同的项目相互干扰(并抑制警告),您可以使用 -p
command line option or the COMPOSE_PROJECT_NAME
environment variable. The environment variable can also be set via an environment file(默认情况下在当前工作目录中的 .env
)设置自定义项目名称。
为了以其他答案为基础,我用我的 docker 撰写项目创建了一个 .env
文件。我有许多项目都使用 docker
目录,但它们是不同的项目。
使用 docker-compose -p
有点容易出错,因此在与 docker-compose.yml
:
.env
文件
-rw-rw-r-- 1 auser auser 1692 Aug 22 20:34 docker-compose.yml
-rw-rw-r-- 1 auser auser 31 Aug 22 20:44 .env
减轻了记住 -p
的必要开销。
在 .env
文件中,我现在可以设置 COMPOSE_PROJECT_NAME
变量:
COMPOSE_PROJECT_NAME=myproject
在 运行:
docker-compose up -d
COMPOSE_PROJECT_NAME
被替换而不使用 -p
。
docker-compose up --remove-orphans
您可以运行此命令来清理孤立容器。如警告中所述
如果孤立容器是预期的且不打算删除,您可以将 COMPOSE_IGNORE_ORPHANS
变量设置为 true。
Consise 但马上可用的来源是 here。
一种选择是将其作为一行放入 docker-compose.yml
旁边的 .env
文件中,如下所示:
COMPOSE_IGNORE_ORPHANS=True
另一个选项是传递或将其设置为环境变量。
sh:
COMPOSE_IGNORE_ORPHANS=True docker-compose up -d
或
export COMPOSE_IGNORE_ORPHANS=True
docker-compose up -d
命令:
SET COMPOSE_IGNORE_ORPHANS=True&& docker-compose up -d
powershell:
$env:COMPOSE_IGNORE_ORPHANS = 'True'; & docker-compose up -d
当您的 docker-compose 文件已更新时会发生这种情况。我在 Docker 启动时收到类似的错误,并发现另一个团队成员更新了 docker-compose.yml 作为清理的一部分。
为了解决这个问题,我使用 Docker 桌面中的删除按钮删除了 docker 组,然后重新启动它。这为我修复了错误。