Docker容器分配公網IP

前言

眾所周知當服務器擁有多個IP,如果請求第三方API有限制IP(嚕羊毛),又希望每個容器能指定不同出口IP,這時候可以透過iptables將Docker橋接網路進行轉發。

設置

1. 新增docker network

經過這個步驟就能分配172.18.0.*網段給Docker使用

docker network create --subnet=172.18.0.0/24 --opt "com.docker.network.bridge.name"="docker1" docker1

2. 新增iptables規則轉發

透過將172.18.0.*轉發到公網IP,172.18.0.*就是後續設置容器IP。

iptables -t nat -I POSTROUTING -p all -s 172.18.0.10 -j SNAT --to-source 公網IP

3.測試容器

需要在原本docker run 指令中添加–network docker1 –ip=172.18.0.*,下面有使用範例,可以修改在自己應用。

docker run --rm --network docker1 --ip=172.18.0.10 curlimages/curl:7.83.1 -L -v https://www.cip.cc/

保存

由於重啟後iptables設置會重置,因此需要安裝iptables-persistent套件實現iptables持久化。

# 安裝iptables-persistent套件
sudo apt install iptables-persistent

iptables-persistent套件在安裝跳出是否要儲存目前iptables和ipv6tables的畫面,選擇Yes才會執行保存動作。

安裝iptables-persistent,如果修改iptables或ipv6tables規則後想保存設置,這時候就需要下指令,讓iptables-persistent進行保存。

# 重新保存iptables規則
# sudo dpkg-reconfigure iptables-persistent
sudo iptables-save | sudo tee /etc/iptables/rules.v4
sudo ip6tables-save | sudo tee /etc/iptables/rules.v6
暫無評論

發怖評論 編輯評論


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇