溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

docker怎么修改容器ip范圍

發(fā)布時(shí)間:2023-03-09 10:30:10 來(lái)源:億速云 閱讀:87 作者:iii 欄目:開發(fā)技術(shù)

這篇“docker怎么修改容器ip范圍”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“docker怎么修改容器ip范圍”文章吧。

    docker修改容器ip范圍

    docker默認(rèn)的內(nèi)網(wǎng)網(wǎng)段為172.17.0.0/16,如果公司內(nèi)網(wǎng)網(wǎng)段也是172.17.x.x的話,就會(huì)發(fā)生路由沖突。

    解決辦法

    改路由比較辦法,可以一開始就將docker配置的bip改成169.254.0.1/24,可以避免沖突。

    在daemon配置文件里加個(gè)"bip":“169.254.0.1/24”,重啟docker就可以了

    [root@st-dev6 ~]# vim /etc/docker/daemon.json
    {
    "bip":"169.254.0.1/24"
    }

    參數(shù) 介紹

    復(fù)制docker-daemon.json各配置詳解

    {
        "api-cors-header":"", ——————在引擎API中設(shè)置CORS標(biāo)頭
        "authorization-plugins":[], ——————要加載的授權(quán)插件
        "bridge":"", ————將容器附加到網(wǎng)橋
        "cgroup-parent":"", ——————為所有容器設(shè)置父cgroup
        "cluster-store":"", ——————分布式存儲(chǔ)后端的URL
        "cluster-store-opts":{}, ————————設(shè)置集群存儲(chǔ)選項(xiàng)(默認(rèn)map [])
        "cluster-advertise":"", ————————要通告的地址或接口名稱
        "debug": true, ————————啟用調(diào)試模式,啟用后,可以看到很多的啟動(dòng)信息。默認(rèn)false
        "default-gateway":"", ——————容器默認(rèn)網(wǎng)關(guān)IPv4地址
        "default-gateway-v6":"", ——————容器默認(rèn)網(wǎng)關(guān)IPv6地址
        "default-runtime":"runc", ————————容器的默認(rèn)OCI運(yùn)行時(shí)(默認(rèn)為" runc")
        "default-ulimits":{}, ——————容器的默認(rèn)ulimit(默認(rèn)[])
        "dns": ["192.168.1.1"], ——————設(shè)定容器DNS的地址,在容器的 /etc/resolv.conf文件中可查看。
        "dns-opts": [], ————————容器 /etc/resolv.conf 文件,其他設(shè)置
        "dns-search": [], ————————設(shè)定容器的搜索域,當(dāng)設(shè)定搜索域?yàn)?nbsp;.example.com 時(shí),在搜索一個(gè)名為 host 的 主機(jī)時(shí),DNS不僅搜索host,還會(huì)搜
        索host.example.com 。 注意:如果不設(shè)置, Docker 會(huì)默認(rèn)用主機(jī)上的 /etc/resolv.conf 來(lái)配置容器。
        "exec-opts": [], ————————運(yùn)行時(shí)執(zhí)行選項(xiàng)
        "exec-root":"", ————————執(zhí)行狀態(tài)文件的根目錄(默認(rèn)為'/var/run/docker‘)
        "fixed-cidr":"", ————————固定IP的IPv4子網(wǎng)
        "fixed-cidr-v6":"", ————————固定IP的IPv6子網(wǎng)
        "data-root":"/var/lib/docker", ————-Docker運(yùn)行時(shí)使用的根路徑,默認(rèn)/var/lib/docker
        "group": "", ——————UNIX套接字的組(默認(rèn)為"docker")
        "hosts": [], ——————設(shè)置容器hosts
        "icc": false, ——————啟用容器間通信(默認(rèn)為true)
        "ip":"0.0.0.0", ————————綁定容器端口時(shí)的默認(rèn)IP(默認(rèn)0.0.0.0)
        "iptables": false, ———————啟用iptables規(guī)則添加(默認(rèn)為true)
        "ipv6": false, ——————啟用IPv6網(wǎng)絡(luò)
        "ip-forward": false, ————————默認(rèn)true, 啟用 net.ipv4.ip_forward ,進(jìn)入容器后使用 sysctl -a | grepnet.ipv4.ip_forward 查看
        "ip-masq":false, ——————啟用IP偽裝(默認(rèn)為true)
        "labels":["nodeName=node-121"], ————————docker主機(jī)的標(biāo)簽,很實(shí)用的功能,例如定義:–label nodeName=host-121
        "live-restore": true, ——————在容器仍在運(yùn)行時(shí)啟用docker的實(shí)時(shí)還原
        "log-driver":"", ——————容器日志的默認(rèn)驅(qū)動(dòng)程序(默認(rèn)為" json-file")
        "log-level":"", ——————設(shè)置日志記錄級(jí)別("調(diào)試","信息","警告","錯(cuò)誤","致命")(默認(rèn)為"信息")
        "max-concurrent-downloads":3, ——————設(shè)置每個(gè)請(qǐng)求的最大并發(fā)下載量(默認(rèn)為3)
        "max-concurrent-uploads":5, ——————設(shè)置每次推送的最大同時(shí)上傳數(shù)(默認(rèn)為5)
        "mtu": 0, ——————設(shè)置容器網(wǎng)絡(luò)MTU
        "oom-score-adjust":-500, ——————設(shè)置守護(hù)程序的oom_score_adj(默認(rèn)值為-500)
        "pidfile": "", ——————Docker守護(hù)進(jìn)程的PID文件
        "raw-logs": false, ——————全時(shí)間戳機(jī)制
        "selinux-enabled": false, ——————默認(rèn) false,啟用selinux支持
        "storage-driver":"", ——————要使用的存儲(chǔ)驅(qū)動(dòng)程序
        "swarm-default-advertise-addr":"", ——————設(shè)置默認(rèn)地址或群集廣告地址的接口
        "tls": true, ————————默認(rèn) false, 啟動(dòng)TLS認(rèn)證開關(guān)
        "tlscacert": "", ——————默認(rèn) ~/.docker/ca.pem,通過(guò)CA認(rèn)證過(guò)的的certificate文件路徑
        "tlscert": "", ————————默認(rèn) ~/.docker/cert.pem ,TLS的certificate文件路徑
        "tlskey": "", ————————默認(rèn)~/.docker/key.pem,TLS的key文件路徑
        "tlsverify": true, ————————默認(rèn)false,使用TLS并做后臺(tái)進(jìn)程與客戶端通訊的驗(yàn)證
        "userland-proxy":false, ——————使用userland代理進(jìn)行環(huán)回流量(默認(rèn)為true)
        "userns-remap":"", ————————用戶名稱空間的用戶/組設(shè)置
        "bip":"192.168.88.0/22", ——————————指定網(wǎng)橋IP
        "registry-mirrors": ["https://192.498.89.232:89"], ————————設(shè)置鏡像加速
        "insecure-registries": ["120.123.122.123:12312"], ———————設(shè)置私有倉(cāng)庫(kù)地址可以設(shè)為http
        "storage-opts": [
        "overlay2.override_kernel_check=true",
        "overlay2.size=15G"
        ], ————————存儲(chǔ)驅(qū)動(dòng)程序選項(xiàng)
        "log-opts": {"max-file": "3","max-size": "10m",}, ————————容器默認(rèn)日志驅(qū)動(dòng)程序選項(xiàng)
        "iptables": false ————————啟用iptables規(guī)則添加(默認(rèn)為true)
    }

    docker配置容器固定ip(親測(cè)有效)

    之前使用pipework 分配靜態(tài)ip是暫時(shí)的,重啟之后就會(huì)失效,并且使用pipework綁定的ip 物理機(jī),虛擬機(jī),docker容器的ip都在同一網(wǎng)段,這在生產(chǎn)環(huán)境是很困難的,下面使用docker自帶的network實(shí)現(xiàn)固定ip分配,并且重啟不會(huì)消失。

    環(huán)境介紹

    docker怎么修改容器ip范圍

    綁定步驟

    先操作192.168.1.105虛擬機(jī)

    第一步:創(chuàng)建自定義網(wǎng)絡(luò)

    docker network create --subnet=172.172.0.0/24 docker-br0

    備注:這里選取了172.172.0.0網(wǎng)段,也可以指定其他任意空閑的網(wǎng)段,docker-br0為自定義網(wǎng)橋的名字,可自己任意取名。

    注意:這里子網(wǎng)掩碼要使用255.255.255.0也就是IP后面的那個(gè)24,因?yàn)楹竺嬉褂胕ptables配置路由表,我之前使用255.255.0.0 無(wú)法配置.所以這里配置成24.

    創(chuàng)建網(wǎng)橋之后,使用ifconfig查看 會(huì)多出一個(gè)網(wǎng)橋,該網(wǎng)橋在docker啟動(dòng)或者重啟之后,會(huì)自動(dòng)顯示出來(lái)。

    永久的,可以使用docker network rm docker-br0 移除網(wǎng)橋。

                      docker怎么修改容器ip范圍

    第二步:在你自定義的網(wǎng)段選取任意IP地址作為你要啟動(dòng)容器IP

    docker run -i -d --net docker-br0 --ip 172.172.0.10 --name nginx -v /usr/local/software/:/mnt/software/ 3bee3060bfc8 /bin/bash

    備注:創(chuàng)建容器時(shí),在第一步創(chuàng)建的網(wǎng)段中選取了172.172.0.10作為靜態(tài)IP地址。并且以docker-br0網(wǎng)橋啟動(dòng). -v是掛載,表示需要將本地哪個(gè)目錄掛載到容器中。3bee3060bfc8是鏡像ID

    使用docker exec -it nginx /bin/bash 進(jìn)入已啟動(dòng)的容器,使用 yum install net-tools 下載 iptables 然后使用ifconfig查看容器ip

    docker怎么修改容器ip范圍

    第三步:測(cè)試本機(jī)和容器是否ping通

    docker怎么修改容器ip范圍

    跨主機(jī)容器互訪

    第四步:在192.168.1.106虛擬機(jī)上,給容器綁定固定ip, 按照之前 第一步到 第三步.

    第五步:在兩個(gè)容器中互相訪問(wèn),發(fā)現(xiàn)跨主機(jī)容器互訪,并不能ping通。

    docker怎么修改容器ip范圍

    第六步:配置路由表

    #添加路由規(guī)則

    ip route add 對(duì)方容器所在的ip網(wǎng)段/子網(wǎng)掩碼 via 對(duì)方虛擬機(jī)ip dev 通過(guò)哪個(gè)網(wǎng)卡通信

    如: ip route add 172.172.1.0/24 via 192.168.1.106 dev eno16777736    

    添加完成之后,可以使用 route命令 查看添加之后的規(guī)則,也可以使用 ip route del 172.172.1.0/24  移除路由規(guī)則

    在192.168.1.105 和 192.168.1.106虛擬機(jī)上,分別添加對(duì)應(yīng)的路由規(guī)則!

    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 

    第七步:在兩個(gè)容器中互相訪問(wèn),發(fā)現(xiàn)可以實(shí)現(xiàn)跨主機(jī)容器互相ping通了。

    docker怎么修改容器ip范圍

    以上就是關(guān)于“docker怎么修改容器ip范圍”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI