轻松管理一组docker容器
我正在使用bash脚本来启动一个虚拟网络,其中包含两个docker容器。这感觉像是史前的。有没有什么工具可以让这样一个组合上下旋转&显示它的当前状态,或者一个人必须自己处理这个问题 如果是轻松管理一组docker容器,docker,docker-compose,Docker,Docker Compose,我正在使用bash脚本来启动一个虚拟网络,其中包含两个docker容器。这感觉像是史前的。有没有什么工具可以让这样一个组合上下旋转&显示它的当前状态,或者一个人必须自己处理这个问题 如果是docker compose,docker文档中不清楚docker compose是自包含的还是绑定到swarm的,一个权威的compose定义文件示例以及启动和停止集成的命令将非常有用 例如,下面是一个bash脚本如何定义/启动两个相互关联的容器的应用程序,不用说,除了只启动一次,该脚本对管理其生命周期没有任
docker compose
,docker文档中不清楚docker compose是自包含的还是绑定到swarm的,一个权威的compose定义文件示例以及启动和停止集成的命令将非常有用
例如,下面是一个bash脚本如何定义/启动两个相互关联的容器的应用程序,不用说,除了只启动一次,该脚本对管理其生命周期没有任何帮助
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 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
它将创建/启动/重新启动容器,并将它们分配给FooAppNet
网络
-d
标志以分离模式运行容器,并防止启动容器时将日志输出打印到终端窗口。您仍然可以通过docker logs-f…像其他容器一样获取他们的日志
然后,您可以使用docker compose down
和docker compose restart
等来控制集成的生命周期。另一方面,它可以使定义文件更加灵活
请参阅下面关于使用docker compose自动旋转的网络的评论。TL;DR―有关解决方案,请参阅的开头部分。它将引导您完成整个必要的配置。很好地工作,需要掌握各种
docker compose
命令行选项以提高效率。最好从docker compose开始。您可以独立于Swarm使用它。单独运行docker network create--driver bridge
可以使它完全独立。(双关语)。还发布了关于后一个关键部分的内容。为了享受compose为项目创建的默认网络,还需要从配置中删除上面的net:
行。简言之,请看这里