2 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
docker run創(chuàng)建Docker contains時(shí),可以用--net選項(xiàng)指定容器的網(wǎng)絡(luò)模式,Docker有以下4種網(wǎng)絡(luò)模式:
host模式,使用--net=host指定。
container模式,使用--net=container:NAME_or_ID指定。
none模式,使用--net=none指定。
bridge模式,使用--net=bridge指定,默認(rèn)設(shè)置。containers啟動(dòng)后會通過DHCP獲取一個(gè)地址.
網(wǎng)絡(luò):em1是內(nèi)網(wǎng),em2是外網(wǎng)(設(shè)置本次外網(wǎng)ip是1.1.1.3),docker0是docker的橋接網(wǎng)卡
獨(dú)立ip:設(shè)置本次獨(dú)立ip是1.1.1.4
操作方法:
1、為獨(dú)立ip與外網(wǎng)卡em2做網(wǎng)卡別名
ifconfig em2:0 1.1.1.4 netmask 255.255.255.0 up
2、啟動(dòng)新容器
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
在宿主機(jī)的iptables里做dnat映射
默認(rèn)的input、output、forward我不做設(shè)置,僅設(shè)置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設(shè)置,-d是指定訪問的外網(wǎng)ip地址,就是我剛才1.1.1.4,另外dport是允許訪問的端口,--to-destination是容器的ip與內(nèi)部端口
- 2 回答
- 0 關(guān)注
- 912 瀏覽
添加回答
舉報(bào)