每个docker一个ip地址吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每个docker一个ip地址吗相关的知识,希望对你有一定的参考价值。
docker run创建Docker contains时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式:host模式,使用--net=host指定。
container模式,使用--net=container:NAME_or_ID指定。
none模式,使用--net=none指定。
bridge模式,使用--net=bridge指定,默认设置。containers启动后会通过DHCP获取一个地址.
网络:em1是内网,em2是外网(设置本次外网ip是1.1.1.3),docker0是docker的桥接网卡
独立ip:设置本次独立ip是1.1.1.4
操作方法:
1、为独立ip与外网卡em2做网卡别名
ifconfig em2:0 1.1.1.4 netmask 255.255.255.0 up
2、启动新容器
docker run --restart always --privileged -d --name=\'test\' docker.com:5000/centos6-http:new /usr/bin/supervisord
3. 获取容器ip
docker inspect test|grep -i add
比如本次获取的ip是172.17.0.5
在宿主机的iptables里做dnat映射
默认的input、output、forward我不做设置,仅设置nat
*nat
:PREROUTING ACCEPT [15:1542]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -j MASQUERADE
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A DOCKER -d 1.1.1.4 ! -i docker0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.5:80
-A DOCKER -d 1.1.1.4 ! -i docker0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.5:443
COMMIT
其中-A DOCKER是做的dnat设置,-d是指定访问的外网ip地址,就是我刚才1.1.1.4,另外dport是允许访问的端口,--to-destination是容器的ip与内部端口 参考技术A 可以这样
docker run创建Docker contains时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式:
host模式,使用--net=host指定。
container模式,使用--net=container:NAME_or_ID指定。
none模式,使用--net=none指定。
bridge模式,使用--net=bridge指定,默认设置。containers启动后会通过DHCP获取一个地址.
网络:em1是内网,em2是外网(设置本次外网ip是1.1.1.3),docker0是docker的桥接网卡
独立ip:设置本次独立ip是1.1.1.4
操作方法:
1、为独立ip与外网卡em2做网卡别名
ifconfig em2:0 1.1.1.4 netmask 255.255.255.0 up
2、启动新容器
docker run --restart always --privileged -d --name='test' docker.com:5000/centos6-http:new /usr/bin/supervisord
3. 获取容器ip
docker inspect test|grep -i add
比如本次获取的ip是172.17.0.5
在宿主机的iptables里做dnat映射
默认的input、output、forward我不做设置,仅设置nat
*nat
:PREROUTING ACCEPT [15:1542]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -j MASQUERADE
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A DOCKER -d 1.1.1.4 ! -i docker0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.5:80
-A DOCKER -d 1.1.1.4 ! -i docker0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.5:443
COMMIT
其中-A DOCKER是做的dnat设置,-d是指定访问的外网ip地址,就是我刚才1.1.1.4,另外dport是允许访问的端口,--to-destination是容器的ip与内部端口 参考技术B 你的是不是最近刚更新了最新的固件?我觉得应该是固件的BUG ,我的御PRo 更新了最新的固件後,今天也现了同样问题,不过我没有飞到很高,几十米的样子,提示断开后,我点了自动返航,就飞回来了。
每个Wi-Fi都有独一无二的IP地址吗?
在写这个问题答案之前看到另外一个问题:如何给自己的IP进行加密防盗?
IP地址仅仅是一串数字而已,比如你拥有一个尊贵的IP地址= 6.6.6.6。无论是加密还是不加密,无论你把它锁进保险柜还是露天放置,都不改变它是一串数字的特征。
这串数字只有配置在主机的TCP/IP协议栈上才有意义,否则一点意义没有。如果你想要的是将以6.6.6.6为源IP地址发出的报文,将6.6.6.6加密起来,让互联网无法发现你。那么你理解出现了极大的偏差,试问你的IP都加密起来了,服务器怎么和你通信呢?
如果你的意思是想匿名,就是在互联网上发表一点激烈的言论,但是不想暴露自己真实主机IP地址,不想自己被追踪?
那样的话,你需要使用一个代理软件即可。假设这个代理软件=2.2.2.2,那么你通过该代理软件发表的言论,在服务器看来是从2.2.2.2发出的,服务器只会追踪到2.2.2.2,而不能追踪到6.6.6.6。
如果你担心别人盗用你的靓号,你的担心不是多余的,别人完全可以用你的靓号向互联网上发虚假攻击报文,这也是你鞭长莫及的。但仅仅是单向通信而已,别人是无法使用6.6.6.6完成双向通信的,因为有运营商的存在。当然如果运营商厉害,别人是无法使用你的靓号发布伪造攻击报文的。
但是如果有人在自己的局域网使用6.6.6.6,尽管不合法,那也是别人的自由,只要网关做了正确的地址翻译,一样可以自由自在访问互联网。只是在互联网服务器的眼中,主机的IP地址不是6.6.6.6, 而是网关的IP、或者网关的网关的IP地址。
IP地址,其实就互联网上的通信地址,所以为了避免混淆,在互联网上IP地址一定是独一无二的。但是在局域网你可以自由自在使用私有IP地址,只要进入互联网的时刻做了正确的IP地址翻译。
即使在同一个家庭局域网,其中包含多个无线Wi-Fi路由器,它们甚至都可以使用10.1.1.1,192.168.1.1。意味着10.1.1.1这个地址可以使用在多个主机上,只要它们不连接在同一个无线路由器上即可。
学过编程的同学理解这点非常容易,全局变量、局部变量,分别对应全球IP、私有IP。当然局域网的用户也可以盗用互联网上的靓号使用,比如8.8.8.8。只要网关上的IP地址翻译做好,一样是没有问题的。但是问题来了,当你试图访问8.8.8.8时,这时候就出问题了,因为你的电脑访问的不是互联网上8.8.8.8服务器,而是你自己,因为你自己使用的恰恰是8.8.8.8。这就是唯一的弊病,所以通常局域网的IP地址配置还是使用私有IP地址比较便利,也不会出现以上的幺蛾子。
源:车小胖谈网络
以上是关于每个docker一个ip地址吗的主要内容,如果未能解决你的问题,请参考以下文章