发怒的莲藕 · jquery ul li 单击事件 ...· 1 年前 · |
眼睛小的啄木鸟 · 曾经,我以为我很懂MySQL索引...-my ...· 1 年前 · |
仗义的铅笔 · hive union all 报错-掘金· 1 年前 · |
机灵的铁链 · google.auth.exceptions ...· 1 年前 · |
此种方式是将容器的某个端口映射到宿主机的某个端口,其它主机访问容器提供的服务需要通过宿主机的IP进行访问:
docker run -p 9000:8000 --name centos1_py2 -itd --privileged=true dockerstorage/centos_py2:latest /usr/sbin/init
这种方式是在通过镜像创建容器的时候指定的,如图所示,加入我们在容器centos1_py2中用8000端口运行一个项目,通过此项配置就可以将容器的8000端口映射到宿主机的9000端口,那么其它主机就可以通过 宿主机的ip:9000来访问运行在容器中的项目了。
docker inspect
可以获取所有的变量,Docker 还可以有一个可变的网络配置。)
docker run --name centos1_py2 -itd --privileged=true --net=host dockerstorage/centos_py2:latest /usr/sbin/init
这样在容器中运行程序就和在主机中运行的一样,访问主机的ip就可以访问运行的应用
docker单主机容器通信
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
这些网络模式在相互网络通信方面的对比如下所示:
南北向通信指容器与宿主机外界的访问机制,东西向流量指同一宿主机上,与其他容器相互访问的机制。
host模式
1 |
|
1 2 3 4 5 |
|
bridge模式
1 2 3 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
none模式
1 2 |
|
其他容器(container)模式
1 2 |
|
1 2 3 |
|
用户定义网络模式
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
docker跨主机容器通信
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
Dokcer通过使用Linux桥接提供容器之间的通信,docker0桥接接口的目的就是方便Docker管理。当Docker daemon启动时需要做以下操作
1 2 3 4 |
|
列出当前主机网桥
1 2 3 |
|
查看当前 docker0 ip
1 2 3 4 5 6 7 8 9 10 |
|
在容器运行时,每个容器都会分配一个特定的虚拟机口并桥接到docker0。每个容器都会配置同docker0 ip相同网段的专用ip 地址,docker0的IP地址被用于所有容器的默认网关。
一般启动的容器中ip默认是172.17.0.1/24网段的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
那么能不能在创建容器的时候指定特定的ip呢?这是当然可以实现的!
注意:宿主机的ip路由转发功能一定要打开,否则所创建的容器无法联网!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
一、创建容器使用特定范围的IP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
|
使用pipework给容器设置一个固定的ip
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
二、不同主机间的容器通信(pipework config docker container ip)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
|
-----------------------------------------------几个报错出来---------------------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
-----------------------------------------------------------------------------------------------------------------------------------
其实除了上面使用的pipework工具还,还可以使用虚拟交换机(Open vSwitch)进行docker容器间的网络通信,废话不多说,下面说下Open vSwitch的使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
本文跨主机通信部分转自: https://www.cnblogs.com/kevingrace/category/839227.html
自从Docker容器出现以来,容器的网络通信就一直是被关注的焦点,也是生产环境的迫切需求。容器的网络通信又可以分为两大方面:单主机容器上的相互通信,和跨主机的容器相互通信。 一、端口映射(局域网,外网此方式均可)。此种方式是将容器的某个端口映射到宿主机的某个端口,其它主机访问容器提供的服务需要通过宿主机的IP进行访问:docker run -p 9000:8000 --name c... 今天在学习 Docker 容器 的时候,在虚拟机中创建并开启了一个nginx的container,然后通过端口映射的方法,即将container的80端口映射到虚拟机的80端口,然后在 宿主机 上通过 访问 虚拟机的 IP 从而 访问 到 Docker 容器 的Nginx服务。 然后开始思考,能否通过分配给container一个独立的 IP ,然后在 宿主机 上 访问 这个独立 IP 从而 访问 Nginx服务。通过各种探索,百度,最终实现,下面开始实验,这里用的是虚拟机的NAT模式。 安装 docker 服务 [root@promote ~]# yum install docker -y 关闭防火墙和SE仗义的铅笔 · hive union all 报错-掘金 1 年前 |