要求:
基于Ubuntu 14.04设置docker实例,其中1个实例起作用 就像网络流量通往所有其他人的网关......
为这样的设置创建一个docker compose文件......
所有这些实例都需要在他们自己的专用docker网络和默认的docker bridge ...
创建了一个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设置生成的图像文件
我检查了实例已启动并正在运行
问题是我希望有2个网络1连接到docker的默认网桥,第2个连接到其他容器,因此其他容器可以通过网络1访问主网络
答案 0 :(得分:1)
修改-1 强>
如果您需要在主网络上访问互联网,那么您需要前两个网络
docker network create --subnet=172.19.0.0/16 internet
docker network create --internal --subnet 10.1.1.0/24 no-internet
上面你可以看一下
的更多细节Restrict Internet Access - Docker Container
现在您可以按照以下更新撰写
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.
您甚至可以使每个作品使用选项
创建自己的网络