docker 指定ip開機器,並且和內網在同一個網段
第1步:創建自定義網絡
備註:這裏選取了100.0.0.0網段,也可以指定其他任意空閒的網段
docker network create --subnet=100.0.0.0/16 shadownet
注:shadown爲自定義網橋的名字,可自己任意取名。
第2步:在你自定義的網段選取任意IP地址作爲你要啓動的container的靜態IP地址
備註:這裏在第二步中創建的網段中選取了100.0.0.10作爲靜態IP地址。這裏以啓動shadowsocks爲例。
docker run -d --net shadownet --ip 100.0.0.10 --name test --hostname test 鏡像名稱
docker run -tid --net shadownet --ip 100.0.0.10 --name test01 --hostname test01 ubuntusshd
第3步
如果希望可以直接使用容器內的port和ip,那麼就把上面定義的網段設置爲何內網網卡同一個網段,並且設置把內網的網卡添加到shadownet這個網橋中
命令如下:
brctl addif br-05da2d960ae0 eth0 :這個名稱你用brctl show 和ifconfig 查看 確定哪一個是你的網橋即可
1.創建自定義網絡
docker network create --subnet=172.10.83.0/24 shadownet
2.查看docker網絡創建的網段
root@ubuntu:~# brctl show
bridge name bridge id STP enabled interfaces
br-63b79e46dfef 8000.001a64c511c4 no eth0
vethb34d864
vethe3a0421
3.配置橋接eth0的網卡,br-63b79e46dfef這個網卡得根據上面brctl show的結果獲取
auto br-63b79e46dfef
iface br-63b79e46dfef inet static
address 172.10.0.83 ## 必須要是eth0,或者說是和你物理網絡在同一個網段
netmask 255.255.0.0 ##和你的物理網絡事相同的掩碼
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
4.
創建主機測試
docker run -d -P -p 1112:4201 --net shadownet --ip 172.10.83.12 --name gaogd-test-sshd02 --hostname gaogd-test-sshd02 ubuntu:latest
5.在其他主機ping 這個新建的網段
1.第一步創建docker 的網絡
docker network create --subnet=172.10.0.0/16 shadownet
其中172.10.0.0/16 這個網段得和你服務器的內網網段一致
2.修改網絡網絡地址配置文件
root@ubuntu:/etc# brctl show
bridge name bridge id STP enabled interfaces
br-6b22c669ab26 8000.66bf785d1ad4 no em2
vethdf73551
添加下面配置內容:其中br-6b22c669ab26這個網卡名稱,根據brctl show 查看得出,brctl 命令需要額外安裝 apt-get install bridge-utils
auto br-6b22c669ab26
iface br-6b22c669ab26 inet static
address 172.10.0.1 ## 這個地址是你的內網網段地址,並且要是網段中的第一個可用ip,因爲容器的默認網關指向網段的第一個可用ip
netmask 255.255.0.0 ## 內網掩碼
broadcast 172.10.0.255
bridge_ports em2 ## 這個em2 是你內網網卡名稱
bridge_stp off
bridge_fd 0
bridge_maxwait 0
3.重啓網卡
sudo ifdown br-6b22c669ab26 && sudo ifup br-6b22c669ab26
4.查看 em2 是否在 br-6b22c669ab26 網橋中
root@ubuntu:/etc# brctl show
bridge name bridge id STP enabled interfaces
br-6b22c669ab26 8000.66bf785d1ad4 no em2
vethdf73551
5.打開包轉發
echo 1 > /proc/sys/net/ipv4/ip_forward
6.開服務器測試
docker run -d -P -p 13:4201 --net shadownet --ip 172.10.89.3 --name gaogd-test-03 --hostname gaogd-test-03 ubuntussh:latest
7.進入服務器
ping 172.10.0.1
ping 172.10.0.xx 內網的其他服務器
ping www.baidu.com 如果成功就可以了
8.如果不可以,就抓包看具體情況,有可能需要做iptable 轉發,或者容器內的默認路由不是知道docker的宿主機,在具體解決
iptables -t nat -A POSTROUTING -s 172.10.0.0/16 -o em1 -j SNAT --to-source=203.166.162.89
具體問題具體分析了。