使用 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.

您甚至可以让每个组合使用选项创建自己的网络