使用同名的多个泊坞窗
Use multiple dockers with same name
我正在使用 keepalived 构建高可用性设置,其中每个服务器都有自己的一组 docker,根据它是在 BACKUP 还是 MASTER 中,它们将得到适当的处理。但是,出于测试目的,我没有可以为此打开和关闭的 2 个盒子。那么,有没有一种好的(最好是轻量级的)方法可以在同一台机器上设置多个同名的 docker?
本质上,它希望它看起来像这样:
Physical Server A
-----------------------------------------
| Virtual Server A |
| -------------------------------------- |
| | keepalived - htmld - accessd - mysql |
| -------------------------------------- |
| ^ |
| | |
| v |
| Virtual Server B |
| -------------------------------------- |
| | keepalived - htmld - accessd - mysql |
| -------------------------------------- |
-----------------------------------------
谢谢
您不能拥有多个名称完全相同的容器,但您可以使用 docker-compose
文件来拥有多个名称相同的目录和容器(但有一些差异,我将在下面解释)。
您可以在 Docker Docs 中阅读更多有关我的以下解释的信息。
让我们假设你的:
Physical Server A
-----------------------------------------
| Virtual Server A |
| -------------------------------------- |
| | keepalived - htmld - accessd - mysql |
| -------------------------------------- |
| ^ |
| | |
| v |
| Virtual Server B |
| -------------------------------------- |
| | keepalived - htmld - accessd - mysql |
| -------------------------------------- |
-----------------------------------------
对于您的情况,我将创建两个目录:vsb
和 vsb
。现在让我们进入这两个目录。
我们有这一个文件(至少,但您可以根据需要拥有更多):
-----------------------------------------
| /home/vsa/docker-compose.yml |
| /home/vsa/keepalived/Dockerfile |
| /home/vsa/htmld/Dockerfile |
| /home/vsa/accessd/Dockerfile |
| /home/vsa/mysql/Dockerfile |
| -------------------------------------- |
| ^ |
| | |
| v |
| /home/vsb/docker-compose.yml |
| /home/vsb/keepalived/Dockerfile |
| /home/vsb/htmld/Dockerfile |
| /home/vsb/accessd/Dockerfile |
| /home/vsb/mysql/Dockerfile |
| -------------------------------------- |
-----------------------------------------
准确记下文件名,因为 Dockerfile
以大写字母 D 开头。
一起看docker-compose.yml
:
version: '3.9'
services:
keepalived:
build: ./keepalived
restart: always
htmld:
build: ./htmld
restart: always
accessd:
build: ./accessd
restart: always
mysql:
build: ./mysql
restart: always
networks:
default:
external:
name: some_network
volumes:
some_name: {}
让我们先深入docker-compose.yml
:
Version
部分定义要使用的版本。 Services
部分启动您要创建的服务和容器以及 运行.
我在 services
下使用了 keepalived
这样的名字。您可以在那里使用任何您想要的名称,因为这是您的选择。
在keepalived
下,关键字build
指定了Dockerfile
存在于哪个路径,所以由于路径被称为/home/vsa/keepalived
,所以我们使用.
这意味着它会转到 keepalived
目录,搜索 Dockerfile
(在 docker-compose.yml
中搜索 vsb
,它在 /home/vsb/keepalived
中搜索此文件)。
networks
部分指定了这些容器使用的 external
网络,因此当我们所有来自 docker-compose 的容器都是 运行ning 时,它们是在同一个 docker 网络中,这样他们就可以看到对方并与之交谈。 name
零件的名称为 some_network
,您可以选择之前创建的任何名称。
如何创建一个名为some_network
的网络,如果你在Linux,你应该运行docker network create some_network
在运行宁docker-编写文件。
volumes
部分指定了这些服务的卷名。
下面是 keepalived
目录中名为 Dockerfile
的文件的示例:
FROM ubuntu:latest # see [Dockerfile Docs][2] for more info
# after FROM command, you can use
# other available commands to reach
# your own goal
现在让我们去Dockerfile
:
FROM
命令指定使用哪个 OS 碱基。在这种情况下,我们想使用 ubuntu
作为例子,这样我们就可以根据 ubuntu
.
创建我们的图像
还有其他命令你可以在上面看到它们link。
使用您自己的命令和关键字完成 Dockerfile
和 docker-compose.yml
文件后,您可以 运行 并通过以下命令创建它们:
docker-compose -f /home/vsa/docker-compose.yml up -d
docker-compose -f /home/vsb/docker-compose.yml up -d
现在我们将有八个容器调用它们(docker 自动调用它们,否则您自己明确命名它们):
vsa_keepalived
vsa_htmld
vsa_accessd
vsa_mysql
vsb_keepalived
vsb_htmld
vsb_accessd
vsb_mysql
我正在使用 keepalived 构建高可用性设置,其中每个服务器都有自己的一组 docker,根据它是在 BACKUP 还是 MASTER 中,它们将得到适当的处理。但是,出于测试目的,我没有可以为此打开和关闭的 2 个盒子。那么,有没有一种好的(最好是轻量级的)方法可以在同一台机器上设置多个同名的 docker?
本质上,它希望它看起来像这样:
Physical Server A
-----------------------------------------
| Virtual Server A |
| -------------------------------------- |
| | keepalived - htmld - accessd - mysql |
| -------------------------------------- |
| ^ |
| | |
| v |
| Virtual Server B |
| -------------------------------------- |
| | keepalived - htmld - accessd - mysql |
| -------------------------------------- |
-----------------------------------------
谢谢
您不能拥有多个名称完全相同的容器,但您可以使用 docker-compose
文件来拥有多个名称相同的目录和容器(但有一些差异,我将在下面解释)。
您可以在 Docker Docs 中阅读更多有关我的以下解释的信息。
让我们假设你的:
Physical Server A
-----------------------------------------
| Virtual Server A |
| -------------------------------------- |
| | keepalived - htmld - accessd - mysql |
| -------------------------------------- |
| ^ |
| | |
| v |
| Virtual Server B |
| -------------------------------------- |
| | keepalived - htmld - accessd - mysql |
| -------------------------------------- |
-----------------------------------------
对于您的情况,我将创建两个目录:vsb
和 vsb
。现在让我们进入这两个目录。
我们有这一个文件(至少,但您可以根据需要拥有更多):
-----------------------------------------
| /home/vsa/docker-compose.yml |
| /home/vsa/keepalived/Dockerfile |
| /home/vsa/htmld/Dockerfile |
| /home/vsa/accessd/Dockerfile |
| /home/vsa/mysql/Dockerfile |
| -------------------------------------- |
| ^ |
| | |
| v |
| /home/vsb/docker-compose.yml |
| /home/vsb/keepalived/Dockerfile |
| /home/vsb/htmld/Dockerfile |
| /home/vsb/accessd/Dockerfile |
| /home/vsb/mysql/Dockerfile |
| -------------------------------------- |
-----------------------------------------
准确记下文件名,因为 Dockerfile
以大写字母 D 开头。
一起看docker-compose.yml
:
version: '3.9'
services:
keepalived:
build: ./keepalived
restart: always
htmld:
build: ./htmld
restart: always
accessd:
build: ./accessd
restart: always
mysql:
build: ./mysql
restart: always
networks:
default:
external:
name: some_network
volumes:
some_name: {}
让我们先深入docker-compose.yml
:
Version
部分定义要使用的版本。 Services
部分启动您要创建的服务和容器以及 运行.
我在 services
下使用了 keepalived
这样的名字。您可以在那里使用任何您想要的名称,因为这是您的选择。
在keepalived
下,关键字build
指定了Dockerfile
存在于哪个路径,所以由于路径被称为/home/vsa/keepalived
,所以我们使用.
这意味着它会转到 keepalived
目录,搜索 Dockerfile
(在 docker-compose.yml
中搜索 vsb
,它在 /home/vsb/keepalived
中搜索此文件)。
networks
部分指定了这些容器使用的 external
网络,因此当我们所有来自 docker-compose 的容器都是 运行ning 时,它们是在同一个 docker 网络中,这样他们就可以看到对方并与之交谈。 name
零件的名称为 some_network
,您可以选择之前创建的任何名称。
如何创建一个名为some_network
的网络,如果你在Linux,你应该运行docker network create some_network
在运行宁docker-编写文件。
volumes
部分指定了这些服务的卷名。
下面是 keepalived
目录中名为 Dockerfile
的文件的示例:
FROM ubuntu:latest # see [Dockerfile Docs][2] for more info
# after FROM command, you can use
# other available commands to reach
# your own goal
现在让我们去Dockerfile
:
FROM
命令指定使用哪个 OS 碱基。在这种情况下,我们想使用 ubuntu
作为例子,这样我们就可以根据 ubuntu
.
还有其他命令你可以在上面看到它们link。
使用您自己的命令和关键字完成 Dockerfile
和 docker-compose.yml
文件后,您可以 运行 并通过以下命令创建它们:
docker-compose -f /home/vsa/docker-compose.yml up -d
docker-compose -f /home/vsb/docker-compose.yml up -d
现在我们将有八个容器调用它们(docker 自动调用它们,否则您自己明确命名它们):
vsa_keepalived
vsa_htmld
vsa_accessd
vsa_mysql
vsb_keepalived
vsb_htmld
vsb_accessd
vsb_mysql