Docker 網(wǎng)絡(luò)工作原理詳解
Docker 網(wǎng)絡(luò)工作原理
當(dāng)Docker server也就是docker daemon啟動(dòng)時(shí),會(huì)自動(dòng)創(chuàng)建一個(gè)名字是docker0的bridge,每當(dāng)docker創(chuàng)建一個(gè)Container時(shí),會(huì)在主機(jī)上面創(chuàng)建一個(gè)名字是veth*的ethernet 端口,并把這個(gè)eth*加入到docker0的bridge,在container中會(huì)自動(dòng)創(chuàng)建一個(gè)名字是eth0的ethernet端口,這個(gè)eth0和veth*會(huì)形成一個(gè)類似管道的對(duì),一一對(duì)應(yīng)。
配置DNS
docker是如何分配每個(gè)container的hostname和DNS配置的,可以通過在contain中mount命令看出一些東西:
mount ... /dev/disk/by-uuid/5f3d0920-98a8-434a-9c02-8163dccf6c62 on /etc/resolv.conf type ext4 (rw,relatime,errors=remount-ro,data=ordered) /dev/disk/by-uuid/5f3d0920-98a8-434a-9c02-8163dccf6c62 on /etc/hostname type ext4 (rw,relatime,errors=remount-ro,data=ordered) /dev/disk/by-uuid/5f3d0920-98a8-434a-9c02-8163dccf6c62 on /etc/hosts type ext4 (rw,relatime,errors=remount-ro,data=ordered) ...
docker run的-h 可以配置container的hostname,可以通過-h HOSTNAME或者--hostname=HOSTNAME來配置,docker會(huì)把HOSTNAME寫入/etc/hostname
例如:
xiaogang@Ubuntu:~/shadowsocks$ sudo docker run -t -i --hostname ubuu --rm ubuntu:14.04 /bin/bash
root@ubuu:/# cat /etc/hostname
ubuu
--link=CONNTAINER_NAMEorID:ALIAS,通過這個(gè)選項(xiàng)會(huì)在/etc/hosts中添加一個(gè)ALIAS,指向CONTAINER_NAMEorID, 無需知道具體的IP地址,可以直接使用ALIAS代替。
例如:
--dns=IP_ADDRESS, 會(huì)在/etc/resolv.conf的server標(biāo)簽中添加一個(gè)IP_ADDRESS
--dns-search=DOMAIN,會(huì)在/etc/resolv.conf的search標(biāo)簽中添加一個(gè)DOMAIN,如果一個(gè)example.com添加到search標(biāo)簽中,當(dāng)container需要查找一個(gè)host的IP時(shí),host.example.com同時(shí)也會(huì)被查找。
container中的/etc/resolv.conf是從主機(jī)中的/etc/resolv.conf拷貝而來,只不過是把主機(jī)本地的nameserver過濾掉,如果過濾之后沒有任何的nameserver,docker會(huì)把google公共nameserver,8.8.8.8和8.8.4.4加入namerserver中。當(dāng)主機(jī)的resolv.conf修改之后會(huì)通知container修改
container之間的通信和container和外部之間的通信
1.需要設(shè)置ip_forward系統(tǒng)參數(shù),必須設(shè)置為1
$ sysctl net.ipv4.conf.all.forwarding net.ipv4.conf.all.forwarding = 0 $ sysctl net.ipv4.conf.all.forwarding=1 $ sysctl net.ipv4.conf.all.forwarding net.ipv4.conf.all.forwarding = 1
2.需要設(shè)置iptables,允許它們之間的通信
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
idea整合docker快速部署springboot應(yīng)用的詳細(xì)過程
這篇文章主要介紹了idea整合docker快速部署springboot應(yīng)用,文中給大家提到關(guān)于安裝docker步驟,idea連接遠(yuǎn)程docker的方法,需要的朋友可以參考下2021-10-10Docker同時(shí)安裝MySQL和MariaDB的方法步驟
這篇文章主要介紹了Docker同時(shí)安裝MySQL和MariaDB的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09docker部署mysql 實(shí)現(xiàn)遠(yuǎn)程連接的示例代碼
這篇文章主要介紹了docker部署mysql 實(shí)現(xiàn)遠(yuǎn)程連接的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Centos7 安裝部署Kubernetes(k8s)集群實(shí)現(xiàn)過程
這篇文章主要為大家介紹了Centos7 安裝部署Kubernetes(k8s)集群實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11docker開啟mysql的binlog日志解決數(shù)據(jù)卷問題
這篇文章主要為大家介紹了關(guān)于docker容器的數(shù)據(jù)表監(jiān)控,利用docker開啟mysql的binlog日志來解決數(shù)據(jù)卷的問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02Docker網(wǎng)絡(luò)配置(橋接網(wǎng)絡(luò)和自定義網(wǎng)絡(luò))自定義網(wǎng)絡(luò)設(shè)置ip方式
這篇文章主要介紹了Docker網(wǎng)絡(luò)配置(橋接網(wǎng)絡(luò)和自定義網(wǎng)絡(luò))自定義網(wǎng)絡(luò)設(shè)置ip方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01