使用Docker设置多个Ubuntu容器

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

要求:

基于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 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.