Ⅰ 如何在 Docker 容器之间设置网络
注意你的 PATH 环境变量要包含 /usr/local/bin 这个路径,请在 /etc/profile 文件中加入一行(LCTT 译注:要使环境变量生效,你需要执行这个命令: source /etc/profile): export PATH="$PATH:/usr/local/bin" 在每台宿主机上重复上面的操作。 Weave 在 TCP 和 UDP 上都使用 6783 端口,如果你的系统开启了防火墙,请确保这两个端口不会被防火墙挡住。 在每台宿主机上启动 Weave 路由器 当你想要让处于在不同宿主机上的容器能够互相通信,第一步要做的就是在每台宿主机上启动 weave 路由器。 第一台宿主机,运行下面的命令,就会创建并开启一个 weave 路由器容器(LCTT 译注:前面说过了,weave 路由器也是一个容器): $ sudo weave launch 第一次运行这个命令的时候,它会下载一个 weave 镜像,这会花一些时间。下载完成后就会自动运行这个镜像。成功启动后,终端会输出这个 weave 路由器的 ID 号。 下面的命令用于查看路由器状态: $ sudo weave status 第一个 weave 路由器就绪了,目前为止整个 peer 对等网络中只有一个 peer 成员。 你也可以使用 docker 的命令来查看 weave 路由器的状态: $ docker ps 第二台宿主机部署步骤稍微有点不同,我们需要为这台宿主机的 weave 路由器指定第一台宿主机的 IP 地址,命令如下: $ sudo weave launch <first-host-IP-address> 当你查看路由器状态,你会看到两个 peer 成员:当前宿主机和第一个宿主机。 当你开启更多路由器,这个 peer 成员列表会更长。当你新开一个路由器时,要指定前一个宿主机的 IP 地址,请注意不是第一个宿主机的 IP 地址(LCTT 译注:链状结构)。 现在你已经有了一个 weave 网络了,它由位于不同宿主机的 weave 路由器组成。 把不同宿主机上的容器互联起来 接下来要做的就是在不同宿主机上开启 Docker 容器,并使用虚拟网络将它们互联起来。 假设我们创建一个私有网络 10.0.0.0/24 来互联 Docker 容器,并为这些容器随机分配 IP 地址。 如果你想新建一个能加入 weave 网络的容器,你就需要使用 weave 命令来创建,而不是 docker 命令。原因是 weave 命令内部会调用 docker 命令来新建容器然后为它设置网络。 下面的命令是在宿主机 hostA 上建立一个 Ubuntu 容器,然后将它放到 10.0.0.0/24 网络中,分配的 IP 地址为 10.0.0.1: hostA:~$ sudo weave run 10.0.0.1/24 -t -i ubuntu 成功运行后,终端会显示出容器的 ID 号。你可以使用这个 ID 来访问这个容器: hostA:~$ docker attach <container-id> 在宿主机 hostB 上,也创建一个 Ubuntu 容器,IP 地址为 10.0.0.2: hostB:~$ sudo weave run 10.0.0.2/24 -t -i ubuntu 访问下这个容器的控制台: hostB:~$ docker attach <container-id> 这两个容器能够互相 ping 通,你可以通过容器的控制台检查一下。 如果你检查一下每个容器的网络配置,你会发现有一块名为“ethwe”的网卡,你分配给容器的 IP 地址出现在它们那里(比如这里分别是 10.0.0.1 和 10.0.0.2)。 Weave 的其他高级用法 weave 提供了一些非常巧妙的特性,我在这里作下简单的介绍。 应用分离 使用 weave,你可以创建多个虚拟网络,并为每个网络设置不同的应用。比如你可以为一群容器创建 10.0.0.0/24 网络,为另一群容器创建 10.10.0.0/24 网络,weave 会自动帮你维护这些网络,并将这两个网络互相隔离。另外,你可以灵活地将一个容器从一个网络移到另一个网络而不需要重启容器。举个例子:
Ⅱ docker网络怎么配置/
在你的宿主机启动docker的时候会多出一个 docker0 的虚拟网卡,然后容器都通过这个和外面通信。容器和docker宿主机之间是NAT的方式共享网络的,也就是说宿主机可以访问的资源,容器也是可以直接访问,你要使用apt-get,你就要保证你的宿主机可以上外网,否则免谈。
Ⅲ 怎么设置Docker容器网络不能外网
在你的宿主机启动docker的时候会多出一个 docker0 的虚拟网卡,然后容器都通过这个和外面通信。
Ⅳ 如何给docker设置http代理
Docker本身只有10多M需要的空间很小只要是64位操作系统内核版本3.18以上(最新docker版本1.9)就行
Ⅳ 如何在 Docker 容器之间设置网络
注意你的 PATH 环境变量要包含 /usr/local/bin 这个路径,请在 /etc/profile 文件中加入一行(LCTT 译注:要使环境变量生效,你需要执行这个命令: source /etc/profile):
export PATH="$PATH:/usr/local/bin"
在每台宿主机上重复上面的操作。
Weave 在 TCP 和 UDP 上都使用 6783 端口,如果你的系统开启了防火墙,请确保这两个端口不会被防火墙挡住。
在每台宿主机上启动 Weave 路由器
当你想要让处于在不同宿主机上的容器能够互相通信,第一步要做的就是在每台宿主机上启动 weave 路由器。
第一台宿主机,运行下面的命令,就会创建并开启一个 weave 路由器容器(LCTT 译注:前面说过了,weave 路由器也是一个容器):
$ sudo weave launch
第一次运行这个命令的时候,它会下载一个 weave 镜像,这会花一些时间。下载完成后就会自动运行这个镜像。成功启动后,终端会输出这个 weave 路由器的 ID 号。
下面的命令用于查看路由器状态:
$ sudo weave status
第一个 weave 路由器就绪了,目前为止整个 peer 对等网络中只有一个 peer 成员。
你也可以使用 docker 的命令来查看 weave 路由器的状态:
$ docker ps
第二台宿主机部署步骤稍微有点不同,我们需要为这台宿主机的 weave 路由器指定第一台宿主机的 IP 地址,命令如下:
$ sudo weave launch <first-host-IP-address>
当你查看路由器状态,你会看到两个 peer 成员:当前宿主机和第一个宿主机。
当你开启更多路由器,这个 peer 成员列表会更长。当你新开一个路由器时,要指定前一个宿主机的 IP 地址,请注意不是第一个宿主机的 IP 地址(LCTT 译注:链状结构)。
现在你已经有了一个 weave 网络了,它由位于不同宿主机的 weave 路由器组成。
把不同宿主机上的容器互联起来
接下来要做的就是在不同宿主机上开启 Docker 容器,并使用虚拟网络将它们互联起来。
假设我们创建一个私有网络 10.0.0.0/24 来互联 Docker 容器,并为这些容器随机分配 IP 地址。
如果你想新建一个能加入 weave 网络的容器,你就需要使用 weave 命令来创建,而不是 docker 命令。原因是 weave 命令内部会调用 docker 命令来新建容器然后为它设置网络。
下面的命令是在宿主机 hostA 上建立一个 Ubuntu 容器,然后将它放到 10.0.0.0/24 网络中,分配的 IP 地址为 10.0.0.1:
hostA:~$ sudo weave run 10.0.0.1/24 -t -i ubuntu
成功运行后,终端会显示出容器的 ID 号。你可以使用这个 ID 来访问这个容器:
hostA:~$ docker attach <container-id>
在宿主机 hostB 上,也创建一个 Ubuntu 容器,IP 地址为 10.0.0.2:
hostB:~$ sudo weave run 10.0.0.2/24 -t -i ubuntu
访问下这个容器的控制台:
hostB:~$ docker attach <container-id>
这两个容器能够互相 ping 通,你可以通过容器的控制台检查一下。
如果你检查一下每个容器的网络配置,你会发现有一块名为“ethwe”的网卡,你分配给容器的 IP 地址出现在它们那里(比如这里分别是 10.0.0.1 和 10.0.0.2)。
Weave 的其他高级用法
weave 提供了一些非常巧妙的特性,我在这里作下简单的介绍。
应用分离
使用 weave,你可以创建多个虚拟网络,并为每个网络设置不同的应用。比如你可以为一群容器创建 10.0.0.0/24 网络,为另一群容器创建 10.10.0.0/24 网络,weave 会自动帮你维护这些网络,并将这两个网络互相隔离。另外,你可以灵活地将一个容器从一个网络移到另一个网络而不需要重启容器。举个例子:
Ⅵ docker网络问题 怎么解决
网络基础 Docker 现有的网络模型主要是通过使用 Network namespace、Linux Bridge、iptables、veth pair 等技术实现的。(出处8) Network namespace:它主要提供了网络资源的隔离,包括网络设备、IPv4/IPv6 协议栈、IP 路由表、防火墙、/proc/net 目录、/sys/class/net 目录、端口(socket)等。 Linux Bridge:功能相当于物理交换机,为连在其上的设备(容器)转发数据帧,如 docker0 网桥。 Iptables:主要为容器提供 NAT 以及容器网络安全。 veth pair:两个虚拟网卡组成的数据通道。在 Docker 中,用于连接 Docker 容器和 Linux Bridge。一端在容器中作为 eth0 网卡,另一端在 Linux Bridge 中作为网桥的一个端口。 容器的网络模式 用来设置网络接口的 docker run --net 命令,它的可用参数有四个: none:关闭了 container 内的网络连接。容器有独立的 Network namespace,但并没有对其进行任何网络设置,如分配 veth pair 和网桥连接,配置 IP 等。 bridge:通过 veth 接口来连接其他 container。这是 docker 的默认选项。 host:允许 container 使用 host 的网络堆栈信息。容器和宿主机共享 Network namespace。 container:使用另外一个 container 的网络堆栈信息。kubernetes 中的 pod 就是多个容器共享一个 Network namespace。 我们需要从中选一个作为我们的网络方案,实际上只有 bridge 和 host 两种模式可选。(想了解这四个参数,请翻到附录B之 Network settings。) 在 docker 默认的网络环境下,单台主机上的容器可以通过 docker0 网桥直接通信,如下图(图作者冯明振)所示: