当前位置: 首页 > 知识库问答 >
问题:

使用Docker设置多个Ubuntu容器

范承教
2023-03-14

要求:

基于Ubuntu14.04的docker实例设置,其中一个实例充当所有其他实例的网络流量网关。。。

为此类设置创建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 install
生成的图像文件,我检查了两个实例都已启动并运行

问题是我想让2个网络1连接到docker的默认网桥网络,第二个连接到其他容器,以便其他容器可以通过网络1访问主网络

共有1个答案

闻人举
2023-03-14

编辑-1

如果您需要在主网络上访问internet,则需要先访问前两个网络

docker network create --subnet=172.19.0.0/16 internet
docker network create --internal --subnet 10.1.1.0/24 no-internet

对于以上内容,您可以查看更多详细信息

限制Internet访问-Docker容器

现在您可以更新作曲如下

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不能

$ 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.

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

 类似资料:
  • 问题内容: 我有一个运行一些Dockerfile的docker- compose文件来创建我的容器。我不想编辑Dockerfile来设置时区,因为它们可能会随时被团队成员更改,并且我有一个docker- compose.override.yml文件可以进行本地环境更改。但是,我的一个容器(基于Selenium的容器)似乎没有拉主机时区,这给我带来了麻烦。基于此,我想在所有容器上实施时区。现在在我的

  • 我有一个运行几个Dockerfile来创建我的容器的docker撰写文件。我不想编辑我的Dockerfile来设置时区,因为它们可以随时由我的团队成员更改,我有一个docker-compose.override.yml文件来进行本地环境更改。然而,我的一个容器(基于硒的容器)似乎没有拉动主机时区,这给我带来了问题。基于此,我想在所有容器上强制执行时区。在我的Dockerfile里我知道 一切正常。

  • 问题内容: 我正在关注本教程。 就我而言,我在Docker环境中运行,并且有一个受保护的站点(即https:// localhost )。这需要安全的SSL通信。 我调整了 网络 和 celery 容器以确保安全连接。 但是我不知道如何配置Redis容器以实现与ssl的安全连接。 请注意,当我在 Web 和 celery 容器中没有ssl连接的情况下运行时,连接就可以了。 如何使用SSL配置和运行

  • 问题内容: 我正在运行Ubuntu Docker容器。我有挪威语键盘,需要使用挪威语字符(øæå)。 我的终端字符编码设置为UTF-8,我使用SSH连接到我的容器。但是,我无法键入挪威字符,也无法复制和粘贴挪威字符,也无法使用CTL + SHIFT + U + 00f8。 我试过了: 但是什么都没有改变。如何在Docker容器中设置语言环境和键盘? 问题答案: 将Dockerfile改编自 这摘自

  • 我有一个容器,其中运行着。我已经成功地使用正确的工作流/字段配置了。现在我想创建一个映像,这样我就可以传播这个配置的多个副本(是的,这里有一个许可问题,这个问题将在其他地方解决)。 我知道要持久化数据,我需要创建。但我不希望我的所有实例都使用这个相同的数据量--我只希望我的图像包含那个数据。但我不太确定该怎么做。 创建与我的容器关联的数据量。 配置所有内容 Docker提交(?) 在新系统上创建新

  • 右键桌面设置中有一个“开启工作区“这个类似虚拟桌面,可以有多个桌面,工作的时候很有用。 桌面右键设置唤醒和黑屏之后唤醒不需要输入密码,既然是平时的开发机,那就没啥多大隐私,而且是在自己家里, 设置密码太麻烦了。 改变鼠标图标大小,小了我看着不爽,下面三个文章是我找的,但是都不适合我: 我最终的方式是:安装 dconf-tools 安装后好,编辑这个文件,命令:gedit ~/ .Xresource