您好,登錄后才能下訂單哦!
這篇“docker怎么修改容器ip范圍”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“docker怎么修改容器ip范圍”文章吧。
docker默認的內網網段為172.17.0.0/16,如果公司內網網段也是172.17.x.x的話,就會發生路由沖突。
改路由比較辦法,可以一開始就將docker配置的bip改成169.254.0.1/24,可以避免沖突。
在daemon配置文件里加個"bip":“169.254.0.1/24”,重啟docker就可以了
[root@st-dev6 ~]# vim /etc/docker/daemon.json { "bip":"169.254.0.1/24" }
復制docker-daemon.json各配置詳解
{ "api-cors-header":"", ——————在引擎API中設置CORS標頭 "authorization-plugins":[], ——————要加載的授權插件 "bridge":"", ————將容器附加到網橋 "cgroup-parent":"", ——————為所有容器設置父cgroup "cluster-store":"", ——————分布式存儲后端的URL "cluster-store-opts":{}, ————————設置集群存儲選項(默認map []) "cluster-advertise":"", ————————要通告的地址或接口名稱 "debug": true, ————————啟用調試模式,啟用后,可以看到很多的啟動信息。默認false "default-gateway":"", ——————容器默認網關IPv4地址 "default-gateway-v6":"", ——————容器默認網關IPv6地址 "default-runtime":"runc", ————————容器的默認OCI運行時(默認為" runc") "default-ulimits":{}, ——————容器的默認ulimit(默認[]) "dns": ["192.168.1.1"], ——————設定容器DNS的地址,在容器的 /etc/resolv.conf文件中可查看。 "dns-opts": [], ————————容器 /etc/resolv.conf 文件,其他設置 "dns-search": [], ————————設定容器的搜索域,當設定搜索域為 .example.com 時,在搜索一個名為 host 的 主機時,DNS不僅搜索host,還會搜 索host.example.com 。 注意:如果不設置, Docker 會默認用主機上的 /etc/resolv.conf 來配置容器。 "exec-opts": [], ————————運行時執行選項 "exec-root":"", ————————執行狀態文件的根目錄(默認為'/var/run/docker‘) "fixed-cidr":"", ————————固定IP的IPv4子網 "fixed-cidr-v6":"", ————————固定IP的IPv6子網 "data-root":"/var/lib/docker", ————-Docker運行時使用的根路徑,默認/var/lib/docker "group": "", ——————UNIX套接字的組(默認為"docker") "hosts": [], ——————設置容器hosts "icc": false, ——————啟用容器間通信(默認為true) "ip":"0.0.0.0", ————————綁定容器端口時的默認IP(默認0.0.0.0) "iptables": false, ———————啟用iptables規則添加(默認為true) "ipv6": false, ——————啟用IPv6網絡 "ip-forward": false, ————————默認true, 啟用 net.ipv4.ip_forward ,進入容器后使用 sysctl -a | grepnet.ipv4.ip_forward 查看 "ip-masq":false, ——————啟用IP偽裝(默認為true) "labels":["nodeName=node-121"], ————————docker主機的標簽,很實用的功能,例如定義:–label nodeName=host-121 "live-restore": true, ——————在容器仍在運行時啟用docker的實時還原 "log-driver":"", ——————容器日志的默認驅動程序(默認為" json-file") "log-level":"", ——————設置日志記錄級別("調試","信息","警告","錯誤","致命")(默認為"信息") "max-concurrent-downloads":3, ——————設置每個請求的最大并發下載量(默認為3) "max-concurrent-uploads":5, ——————設置每次推送的最大同時上傳數(默認為5) "mtu": 0, ——————設置容器網絡MTU "oom-score-adjust":-500, ——————設置守護程序的oom_score_adj(默認值為-500) "pidfile": "", ——————Docker守護進程的PID文件 "raw-logs": false, ——————全時間戳機制 "selinux-enabled": false, ——————默認 false,啟用selinux支持 "storage-driver":"", ——————要使用的存儲驅動程序 "swarm-default-advertise-addr":"", ——————設置默認地址或群集廣告地址的接口 "tls": true, ————————默認 false, 啟動TLS認證開關 "tlscacert": "", ——————默認 ~/.docker/ca.pem,通過CA認證過的的certificate文件路徑 "tlscert": "", ————————默認 ~/.docker/cert.pem ,TLS的certificate文件路徑 "tlskey": "", ————————默認~/.docker/key.pem,TLS的key文件路徑 "tlsverify": true, ————————默認false,使用TLS并做后臺進程與客戶端通訊的驗證 "userland-proxy":false, ——————使用userland代理進行環回流量(默認為true) "userns-remap":"", ————————用戶名稱空間的用戶/組設置 "bip":"192.168.88.0/22", ——————————指定網橋IP "registry-mirrors": ["https://192.498.89.232:89"], ————————設置鏡像加速 "insecure-registries": ["120.123.122.123:12312"], ———————設置私有倉庫地址可以設為http "storage-opts": [ "overlay2.override_kernel_check=true", "overlay2.size=15G" ], ————————存儲驅動程序選項 "log-opts": {"max-file": "3","max-size": "10m",}, ————————容器默認日志驅動程序選項 "iptables": false ————————啟用iptables規則添加(默認為true) }
之前使用pipework 分配靜態ip是暫時的,重啟之后就會失效,并且使用pipework綁定的ip 物理機,虛擬機,docker容器的ip都在同一網段,這在生產環境是很困難的,下面使用docker自帶的network實現固定ip分配,并且重啟不會消失。
先操作192.168.1.105虛擬機
第一步:創建自定義網絡
docker network create --subnet=172.172.0.0/24 docker-br0
備注:這里選取了172.172.0.0網段,也可以指定其他任意空閑的網段,docker-br0為自定義網橋的名字,可自己任意取名。
注意:這里子網掩碼要使用255.255.255.0也就是IP后面的那個24,因為后面要使用iptables配置路由表,我之前使用255.255.0.0 無法配置.所以這里配置成24.
創建網橋之后,使用ifconfig查看 會多出一個網橋,該網橋在docker啟動或者重啟之后,會自動顯示出來。
永久的,可以使用docker network rm docker-br0 移除網橋。
第二步:在你自定義的網段選取任意IP地址作為你要啟動容器IP
docker run -i -d --net docker-br0 --ip 172.172.0.10 --name nginx -v /usr/local/software/:/mnt/software/ 3bee3060bfc8 /bin/bash
備注:創建容器時,在第一步創建的網段中選取了172.172.0.10作為靜態IP地址。并且以docker-br0網橋啟動. -v是掛載,表示需要將本地哪個目錄掛載到容器中。3bee3060bfc8是鏡像ID
使用docker exec -it nginx /bin/bash 進入已啟動的容器,使用 yum install net-tools 下載 iptables 然后使用ifconfig查看容器ip
第三步:測試本機和容器是否ping通
跨主機容器互訪
第四步:在192.168.1.106虛擬機上,給容器綁定固定ip, 按照之前 第一步到 第三步.
第五步:在兩個容器中互相訪問,發現跨主機容器互訪,并不能ping通。
第六步:配置路由表
#添加路由規則
ip route add 對方容器所在的ip網段/子網掩碼 via 對方虛擬機ip dev 通過哪個網卡通信
如: ip route add 172.172.1.0/24 via 192.168.1.106 dev eno16777736
添加完成之后,可以使用 route命令 查看添加之后的規則,也可以使用 ip route del 172.172.1.0/24 移除路由規則
在192.168.1.105 和 192.168.1.106虛擬機上,分別添加對應的路由規則!
192.168.1.105: ip route add 172.172.1.0/24 via 192.168.1.106 dev eno16777736
192.168.1.106: ip route add 172.172.0.0/24 via 192.168.1.105 dev eno16777736
第七步:在兩個容器中互相訪問,發現可以實現跨主機容器互相ping通了。
以上就是關于“docker怎么修改容器ip范圍”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。