毫不费力地管理一组 docker 个容器
Managing a group of docker containers without the sweat
我正在使用 bash 脚本启动一个带有两个 docker 容器的虚拟网络。这感觉史前。是否有某种工具可以上下旋转这样一个整体并显示其当前状态,还是必须自己处理?
在 docker-compose
的情况下,docker 文档中不清楚 docker-compose 是独立的还是绑定到 swarm,以及 compose 定义文件的权威示例,使用启动和停止集成的命令会非常有帮助。
例如这是 bash 脚本对 define/start 两个相互关联的容器的应用程序所做的事情,不用说这个脚本除了启动一次之外无助于管理其生命周期。
docker network create --driver bridge FooAppNet
docker run --rm --net=FooAppNet --name=component1 -p 9000:9000 component1-image
docker run --rm --net=FooAppNet --name=component2 component2-image
同样在此示例中,容器 component1
向主机公开端口 9000,其包含的应用程序已在其配置文件中硬连线,以按其名称使用 component2
的服务(以下常见的 docker 网络实践依赖于 docker networks' internal DNS)。
对于您给出的示例,以下 Docker Compose 文件将为您提供所需的内容:
component1:
image: component1-image
net: FooAppNet
container_name: component1
ports:
- "9000:9000"
component2:
image: component2-image
net: FooAppNet
container_name: component2
如果您将其存储在 docker-compose.yml
文件中,然后 运行 docker-compose up -d
它将 create/start/restart 您的容器并将它们分配给您的 FooAppNet
网络。
-d
标志 运行 使容器处于分离模式,并防止在启动容器时将日志输出打印到终端 window。您仍然可以像使用任何其他容器一样通过 docker logs -f ...
获取他们的日志。
然后您可以使用 docker-compose down
和 docker-compose restart
等来控制集成的生命周期。顺便说一句,using variables 可以使定义文件更加灵活。
请参阅下面关于使用 docker compose 自动启动的网络的评论。
TL;DR ― 请参阅 https://docs.docker.com/compose/networking/ 的开头部分以获取解决方案。它会引导您完成整个必要的配置。运行良好,需要掌握各种 docker-compose
命令行选项才能高效使用它。
我正在使用 bash 脚本启动一个带有两个 docker 容器的虚拟网络。这感觉史前。是否有某种工具可以上下旋转这样一个整体并显示其当前状态,还是必须自己处理?
在 docker-compose
的情况下,docker 文档中不清楚 docker-compose 是独立的还是绑定到 swarm,以及 compose 定义文件的权威示例,使用启动和停止集成的命令会非常有帮助。
例如这是 bash 脚本对 define/start 两个相互关联的容器的应用程序所做的事情,不用说这个脚本除了启动一次之外无助于管理其生命周期。
docker network create --driver bridge FooAppNet
docker run --rm --net=FooAppNet --name=component1 -p 9000:9000 component1-image
docker run --rm --net=FooAppNet --name=component2 component2-image
同样在此示例中,容器 component1
向主机公开端口 9000,其包含的应用程序已在其配置文件中硬连线,以按其名称使用 component2
的服务(以下常见的 docker 网络实践依赖于 docker networks' internal DNS)。
对于您给出的示例,以下 Docker Compose 文件将为您提供所需的内容:
component1:
image: component1-image
net: FooAppNet
container_name: component1
ports:
- "9000:9000"
component2:
image: component2-image
net: FooAppNet
container_name: component2
如果您将其存储在 docker-compose.yml
文件中,然后 运行 docker-compose up -d
它将 create/start/restart 您的容器并将它们分配给您的 FooAppNet
网络。
-d
标志 运行 使容器处于分离模式,并防止在启动容器时将日志输出打印到终端 window。您仍然可以像使用任何其他容器一样通过 docker logs -f ...
获取他们的日志。
然后您可以使用 docker-compose down
和 docker-compose restart
等来控制集成的生命周期。顺便说一句,using variables 可以使定义文件更加灵活。
请参阅下面关于使用 docker compose 自动启动的网络的评论。
TL;DR ― 请参阅 https://docs.docker.com/compose/networking/ 的开头部分以获取解决方案。它会引导您完成整个必要的配置。运行良好,需要掌握各种 docker-compose
命令行选项才能高效使用它。