当前位置:首页 » 通讯网络 » docker上网

docker上网

发布时间: 2021-03-16 10:03:05

① docker容器默认能上网

docker 镜像是无法连接外网,只有通过部署这个镜像的容器才能实现访问外网。查看此链接,详细介绍如何使用docker镜像,docker容器等功能,网页链接

② docker哪种网络模式比较好

Docker的4种网络模式

我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式:

host模式,使用--net=host指定。
container模式,使用--net=container:NAME_or_ID指定。
none模式,使用--net=none指定。
bridge模式,使用--net=bridge指定,默认设置。
下面分别介绍一下Docker的各个网络模式。

1、host模式

众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口

例如,我们在10.10.101.105/24的机器上用host模式启动一个含有web应用的Docker容器,监听tcp80端口。当我们在容器中执行任何类似ifconfig命令查看网络环境时,看到的都是宿主机上的信息。而外界访问容器中的应用,则直接使用10.10.101.105:80即可,不用任何NAT转换,就如直接跑在宿主机中一样。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

2、 container模式

在理解了host模式后,这个模式也就好理解了。这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。

3、none模式

这个模式和前两个不同。在这种模式下,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。

4、bridge模式

bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。

栈是一种常见的数据结构,它虽然有栈顶和栈底之分,但它只能从一端操作(插入或删除),从而是一种“先进后出”的操作模式。向栈内进数据称为压栈(Push),从栈里取出数据叫出栈(POp)。例如压栈顺序为1、2、3、4、5,着出栈的顺序为5、4、3、2、1(只考虑一次性出栈的情况)。
栈按照存储的方式,又分为顺序栈和链表栈。顺序栈基于数组实现,所以顺序栈存储数据的内存是连续的,在创建栈时规定好栈的大小,这样对内存的使用效率并不高。而链式栈则是采用了链表来实现,其元素的存储地址是不连续的,而且是动态分配内存。顺序栈在使用的过程中可能出现 栈满、栈空的情况,由于链式栈基于链表设计,因此不会有栈满的情况(也会栈空)。

③ 如何在 docker 容器之间设置网络

在使用weave之前,你需要在所有宿主机上安装Docker环境,参考这些教程,在Ubuntu或CentOS/Fedora发行版中安装Docker。Docker环境部署完成后,使用下面的命令安装weave:$wget/zettio/weave/releases/download/latest_release/weave$chmoda+xweave$sudocpweave/usr/local/bin注意你的PATH环境变量要包含/usr/local/bin这个路径,请在/etc/profile文件中加入一行(LCTT译注:要使环境变量生效,你需要执行这个命令:source/etc/profile):exportPATH="$PATH:/usr/local/bin"在每台宿主机上重复上面的操作。Weave在TCP和UDP上都使用6783端口,如果你的系统开启了防火墙,请确保这两个端口不会被防火墙挡住。在每台宿主机上启动Weave路由器当你想要让处于在不同宿主机上的容器能够互相通信,第一步要做的就是在每台宿主机上启动weave路由器。第一台宿主机,运行下面的命令,就会创建并开启一个weave路由器容器(LCTT译注:前面说过了,weave路由器也是一个容器):$sudoweavelaunch第一次运行这个命令的时候,它会下载一个weave镜像,这会花一些时间。下载完成后就会自动运行这个镜像。成功启动后,终端会输出这个weave路由器的ID号。下面的命令用于查看路由器状态:$sudoweavestatus第一个weave路由器就绪了,目前为止整个peer对等网络中只有一个peer成员。你也可以使用docker的命令来查看weave路由器的状态:$dockerps第二台宿主机部署步骤稍微有点不同,我们需要为这台宿主机的weave路由器指定第一台宿主机的IP地址,命令如下:$sudoweavelaunch当你查看路由器状态,你会看到两个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:~$sudoweaverun10.0.0.1/24-t-iubuntu成功运行后,终端会显示出容器的ID号。你可以使用这个ID来访问这个容器:hostA:~$dockerattach在宿主机hostB上,也创建一个Ubuntu容器,IP地址为10.0.0.2:hostB:~$sudoweaverun10.0.0.2/24-t-iubuntu访问下这个容器的控制台:hostB:~$dockerattach这两个容器能够互相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会自动帮你维护这些网络,并将这两个网络互相隔离。另外,你可以灵活地将一个容器从一个网络移到另一个网络而不需要重启容器。举个例子:首先开启一个容器,运行在10.0.0.0/24网络上:$sudoweaverun10.0.0.2/24-t-iubuntu然后让它脱离这个网络:$sudoweavedetach10.0.0.2/24最后将它加入到10.10.0.0/24网络中:$sudoweaveattach10.10.0.2/24现在这个容器可以与10.10.0.0/24网络上的其它容器进行通信了。这在当你创建一个容器而网络信息还不确定时就很有帮助了。将weave网络与宿主机网络整合起来有时候你想让虚拟网络中的容器能访问物理主机的网络。或者相反,宿主机需要访问容器。为满足这个功能,weave允许虚拟网络与宿主机网络整合。举个例子,在宿主机hostA上一个容器运行在10.0.0.0/24中,运行使用下面的命令:hostA:~$sudoweaveexpose10.0.0.100/24这个命令把IP地址10.0.0.100分配给宿主机hostA,这样一来宿主机hostA也连到了10.0.0.0/24网络上了。显然,你在为宿主机选择IP地址的时候,需要选一个没有被其他容器使用的地址。现在hostA就可以访问10.0.0.0/24上的所有容器了,不管这些容器是否位于hostA上。好巧妙的设定啊,32个赞

④ 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 网桥直接通信,如下图(图作者冯明振)所示:

⑤ docker网络怎么配置/

在你的宿主机启动docker的时候会多出一个 docker0 的虚拟网卡,然后容器都通过这个和外面通信。容器和docker宿主机之间是NAT的方式共享网络的,也就是说宿主机可以访问的资源,容器也是可以直接访问,你要使用apt-get,你就要保证你的宿主机可以上外网,否则免谈。

⑥ docker 访问不了外部网络吗

宿主机启docker候 docker0 虚拟网卡容器都通外面通信

⑦ docker下的centos7怎么上网

当前Ubuntu 系统下的 Docker 的安装包只提供64位。如果你想运行32位的 Docker,你需要。 安装 Docker 通过 apt-get 安装 Docker 简直是小菜一碟。 $ sudo apt-get install docker.io 如果你不是 root 组的用户,你可以把自己加入到 docker 用户...

⑧ docker镜像能上网吗

docker 镜像是无法连接外网,只有通过部署这个镜像的容器才能实现访问外网。查看此链接,详细介绍如何使用docker镜像,docker容器等功能,网页链接

热点内容
网卡了的原因 发布:2021-03-16 21:18:20 浏览:602
联通客服工作怎么样 发布:2021-03-16 21:17:49 浏览:218
路由器画图 发布:2021-03-16 21:17:21 浏览:403
大网卡收费 发布:2021-03-16 21:16:50 浏览:113
路由器免费送 发布:2021-03-16 21:16:19 浏览:985
孝昌营业厅 发布:2021-03-16 21:15:54 浏览:861
网速增速代码 发布:2021-03-16 21:15:29 浏览:194
怎么黑光纤 发布:2021-03-16 21:14:54 浏览:901
端口增大 发布:2021-03-16 21:14:20 浏览:709
开机没信号是什么原因 发布:2021-03-16 21:13:45 浏览:645