轻松管理一组docker容器

轻松管理一组docker容器,docker,docker-compose,Docker,Docker Compose,我正在使用bash脚本来启动一个虚拟网络,其中包含两个docker容器。这感觉像是史前的。有没有什么工具可以让这样一个组合上下旋转&显示它的当前状态,或者一个人必须自己处理这个问题 如果是docker compose,docker文档中不清楚docker compose是自包含的还是绑定到swarm的,一个权威的compose定义文件示例以及启动和停止集成的命令将非常有用 例如,下面是一个bash脚本如何定义/启动两个相互关联的容器的应用程序,不用说,除了只启动一次,该脚本对管理其生命周期没有任

我正在使用bash脚本来启动一个虚拟网络,其中包含两个docker容器。这感觉像是史前的。有没有什么工具可以让这样一个组合上下旋转&显示它的当前状态,或者一个人必须自己处理这个问题

如果是
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:
行。简言之,请看这里