日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Docker系统六:Docker网络管理

發(fā)布時間:2023/12/13 windows 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker系统六:Docker网络管理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Docker網(wǎng)絡

I. Docer的通信方式

默認情況下,Docker使用網(wǎng)橋(brige)+ NAT的通信模型.
Docker啟動時會自動創(chuàng)建網(wǎng)橋Docker0,并配置ip 172.17.0.1/16

ifconfig docker0 docker0 Link encap:Ethernet HWaddr 02:42:e0:31:ac:10inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:1846 errors:0 dropped:0 overruns:0 frame:0TX packets:5562 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:168242 (168.2 KB) TX bytes:23550976 (23.5 MB)

Docker容器內(nèi)容及容器與宿主機通信方式(Brige方式)

當Docker啟動容器時,會創(chuàng)建一對veth虛擬網(wǎng)絡設備:

  • 一個附加到網(wǎng)橋上;
  • 一個加入容器的網(wǎng)張命名空間并被改名為eth0

Docker容器與外部網(wǎng)張通信(NAT方式)

1)容器訪問外網(wǎng)

Docker通過創(chuàng)建如下MASQUERADE規(guī)則進行外部網(wǎng)絡訪問:

iptables -t nat -A POSTROUTING -s 172.17.0.0/16 !-o docker0 -j MASQUERADE

規(guī)則說明:獎所有從容器(172.17.0.0/16)發(fā)往外網(wǎng)的包的源地址都改為Host(宿主機)的IP。

2)外網(wǎng)訪問容器

當容器提供的服務需要暴露給外部網(wǎng)絡里,Docker啟動容器里,會創(chuàng)建SNAT規(guī)則。eg,啟動一個apache容器:

docker run -d -p 80:80 apache

在上述命令背后其實會創(chuàng)建如下SNAT規(guī)則:

iptables -t nat -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER iptables -t nat -A DOCKER !-i docker0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.2:80

II. Docker的網(wǎng)絡配置

Docker中很多網(wǎng)絡相關(guān)的參數(shù)主是有:

  • Docker進程本身的,影響所有docker容器;
  • Docker容器相關(guān)的,只影響當前容器;

1. 網(wǎng)絡配置參數(shù)

1)Docker進程的網(wǎng)絡配置

相關(guān)參數(shù)如下:

-b, --bridge="" ;//指定Docker使用的網(wǎng)絡設備。默認下,Docker會創(chuàng)建docker0網(wǎng)橋設備,通過該參數(shù)可以指定Docker使用已存在的網(wǎng)橋設備--bip="" ;//指定網(wǎng)橋設備的docker0的IP和掩碼,使用標準的CIDR形式,如192.168.1.5/24--dns=[] ;//強制docker使用指定的DNS servers--dns-search=[] ;//強制docker使用指定的DNS search domains--icc=true ;//打開inter-container溝通--ip="0.0.0.0" ;//綁定容器端口時的默認IP--ip-forward=true ;//打開 net.ipv4.ip_forward--iptables=true; //打開docker的iptables rules增加--mtu=0; //設置容器的網(wǎng)絡MTU,如果沒有設置任何值則默認route MTU ,當默認路由不存在時,使用1500

Note:

--dns/--dns-search: 配置容器的DNS,改參數(shù)可以在啟動Docker進程時指定(成為所有容器的默認值),也可以在啟動容器(docker run)時指定(覆蓋默認值)。
2)容器的網(wǎng)絡配置

下面是docker run時的一些網(wǎng)絡配置參數(shù):

--net="bridge" //用于指定容器使用的網(wǎng)絡通信方式;

它有如下四個值:

  • bridge : Docker容器的默認通信方式;
  • none : 容器沒有網(wǎng)絡棧,此時容器無法與外界通信;
  • container:<name|id> : 使用其他容器(name或id)的網(wǎng)絡棧。實際上,Docker會將該容器加到指定的容器network namespace, 這是一種非常有用的方式。
  • host : 表示容器使用Host的網(wǎng)絡,沒有自己獨立的網(wǎng)絡棧。實際上,在這種情況下,Docker不會給容器創(chuàng)建單獨的網(wǎng)絡名字空間(newwork namespace).由于容器可以完全訪問Host的網(wǎng)絡,所以此方式也是不安全的。

2. 配置DNS

一般來說每個容器的hostname和DNS配置信息是不同的,我們不可能為每個容器都構(gòu)建一個鏡像,并在鏡像中指定這些信息。實際上,Docker在啟動容器時,會使用bind mount動態(tài)掛載/etc/hostname,/etc/hosts,/etc/resolv.conf幾個文件,覆蓋鏡像中原來的文件。通過如下命令我們可以在容器內(nèi)看到這個信息:

docker exec -it {容器} /bin/bash mount/dev/vda1 on /etc/resolv.conf type ext4 (rw,relatime,errors=remount-ro,data=ordered) /dev/vda1 on /etc/hostname type ext4 (rw,relatime,errors=remount-ro,data=ordered) /dev/vda1 on /etc/hosts type ext4 (rw,relatime,errors=remount-ro,data=ordered)

所以,我們可以通過命令行參數(shù)在啟動Doker時指定DNS

3. Docker網(wǎng)絡相關(guān)的一些參考

  • 關(guān)于docker網(wǎng)絡的概念:理解Docker容器網(wǎng)絡之Linux Network Namespace

  • 關(guān)于源地址和目地地址的轉(zhuǎn)換關(guān)系:iptables中DNAT、SNAT和MASQUERADE的理解

  • Docker相關(guān)的網(wǎng)絡詳解:Docker網(wǎng)絡詳解

  • iptables命令詳解:iptables命令詳解

轉(zhuǎn)載于:https://www.cnblogs.com/Terry-Wu/p/7461453.html

總結(jié)

以上是生活随笔為你收集整理的Docker系统六:Docker网络管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。