使用Docker设置多个Ubuntu容器
要求: 基于Ubuntu 14.04安装docker实例,其中1个实例运行 就像一个通往所有其他网络流量的网关 为这样的设置创建docker compose文件 所有这些实例都需要在自己的专用docker网络和默认docker网桥上运行 创建了Dockerfile使用Docker设置多个Ubuntu容器,docker,ubuntu-14.04,docker-compose,dockerfile,Docker,Ubuntu 14.04,Docker Compose,Dockerfile,要求: 基于Ubuntu 14.04安装docker实例,其中1个实例运行 就像一个通往所有其他网络流量的网关 为这样的设置创建docker compose文件 所有这些实例都需要在自己的专用docker网络和默认docker网桥上运行 创建了Dockerfile FROM ubuntu:14.04 # Set environment variables. ENV HOME /root # Define working directory. WORKDIR /root # Define d
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
其中Testinginer_main是我使用Dockerfile设置生成的图像文件
我检查了两个实例是否都已启动并正在运行
问题是我想让2个网络1连接到docker的默认网桥网络,第2个连接到其他容器,以便其他容器可以通过网络1访问主网络
如果您需要在主网络上访问internet,则需要先访问前两个网络
docker network create --subnet=172.19.0.0/16 internet
docker network create --internal --subnet 10.1.1.0/24 no-internet
对于以上内容,您可以查看有关的更多详细信息
现在您可以按如下所示更新compose
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具有internet访问权限,而first没有
您甚至可以让每个组件使用选项创建自己的网络只有主容器才可以访问internet,其他容器只能访问主网络,不能访问internet
$ 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.