使用 Docker 设置多个 Ubuntu 容器
Setup multiple Ubuntu Container using Docker
要求:
基于 Ubuntu 14.04 的 docker 个实例的设置,其中 1 个实例起作用
就像所有其他网络流量的网关...
为这样的设置创建一个 docker 撰写文件...
所有这些实例都需要在自己的专用 docker 网络和默认 docker 网桥上...
创建了一个 Dockerfile
FROM ubuntu:14.04
# Set environment variables.
ENV HOME /root
# Define working directory.
WORKDIR /root
# Define default command.
CMD ["/bin/bash"]
docker-compose.yml
version: '3'
services:
main:
image: testenginer_main
tty: true
first:
image: testenginer_main
tty: true
其中 testenginer_main 是我使用 Dockerfile setup
生成的图像文件
我检查了两个实例都已启动并且 运行
问题是我想要 2 个网络 1 连接到 docker 的默认桥接网络,第二个连接到其他容器,以便其他容器可以通过网络 1
访问主网络
编辑-1
如果您需要在主网络上访问互联网,那么您需要先访问两个网络
docker network create --subnet=172.19.0.0/16 internet
docker network create --internal --subnet 10.1.1.0/24 no-internet
关于以上你可以在
上查看更多细节
现在您可以按如下方式更新撰写
version: '3'
services:
main:
image: testenginer_main
tty: true
networks:
- internet
- no-internet
first:
image: testenginer_main
tty: true
networks:
- no-internet
networks:
no-internet:
external: true
internet:
external: true
现在,如果您 运行 容器,您将看到 main
可以访问互联网,而 first
没有
$ docker-compose ps
Name Command State Ports
--------------------------------------
ub_first_1 /bin/bash Up
ub_main_1 /bin/bash Up
$ docker-compose exec main apt update
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB]
^C
$ docker-compose exec first apt update
Err:1 http://archive.ubuntu.com/ubuntu xenial InRelease
Temporary failure resolving 'archive.ubuntu.com'
Err:2 http://security.ubuntu.com/ubuntu xenial-security InRelease
Temporary failure resolving 'security.ubuntu.com'
....
W: Some index files failed to download. They have been ignored, or old ones used instead.
您甚至可以让每个组合使用选项创建自己的网络
要求:
基于 Ubuntu 14.04 的 docker 个实例的设置,其中 1 个实例起作用 就像所有其他网络流量的网关...
为这样的设置创建一个 docker 撰写文件...
所有这些实例都需要在自己的专用 docker 网络和默认 docker 网桥上...
创建了一个 Dockerfile
FROM ubuntu:14.04
# Set environment variables.
ENV HOME /root
# Define working directory.
WORKDIR /root
# Define default command.
CMD ["/bin/bash"]
docker-compose.yml
version: '3'
services:
main:
image: testenginer_main
tty: true
first:
image: testenginer_main
tty: true
其中 testenginer_main 是我使用 Dockerfile setup
生成的图像文件
我检查了两个实例都已启动并且 运行
问题是我想要 2 个网络 1 连接到 docker 的默认桥接网络,第二个连接到其他容器,以便其他容器可以通过网络 1
访问主网络编辑-1
如果您需要在主网络上访问互联网,那么您需要先访问两个网络
docker network create --subnet=172.19.0.0/16 internet
docker network create --internal --subnet 10.1.1.0/24 no-internet
关于以上你可以在
上查看更多细节现在您可以按如下方式更新撰写
version: '3'
services:
main:
image: testenginer_main
tty: true
networks:
- internet
- no-internet
first:
image: testenginer_main
tty: true
networks:
- no-internet
networks:
no-internet:
external: true
internet:
external: true
现在,如果您 运行 容器,您将看到 main
可以访问互联网,而 first
没有
$ docker-compose ps
Name Command State Ports
--------------------------------------
ub_first_1 /bin/bash Up
ub_main_1 /bin/bash Up
$ docker-compose exec main apt update
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB]
^C
$ docker-compose exec first apt update
Err:1 http://archive.ubuntu.com/ubuntu xenial InRelease
Temporary failure resolving 'archive.ubuntu.com'
Err:2 http://security.ubuntu.com/ubuntu xenial-security InRelease
Temporary failure resolving 'security.ubuntu.com'
....
W: Some index files failed to download. They have been ignored, or old ones used instead.
您甚至可以让每个组合使用选项创建自己的网络