docker高階網路配置

2021-08-01 04:52:21 字數 2510 閱讀 5516

當 docker 啟動時,會自動在主機上建立乙個 docker0 虛擬網橋,實際上是 linux 的乙個 bridge,可以理

解為乙個軟體交換機。它會在掛載到它的網口之間進行**。

當建立乙個 docker 容器的時候,同時會建立了一對 veth pair 介面(當資料報傳送到乙個介面時,另外

乙個介面也可以收到相同的資料報)。這對介面一端在容器內,即 eth0 ;另一端在本地並被掛載到

docker0 網橋,名稱以 veth 開頭(例如 vethaqi2qt )。通過這種方式,主機可以跟容器通訊,容器

之間也可以相互通訊。docker 就建立了在主機和所有容器之間乙個虛擬共享網路。

其中有些命令選項只有在 docker 服務啟動的時候才能配置,而且不能馬上生效。

-b bridge or --bridge=bridge --指定容器掛載的網橋

--bip=cidr --定製 docker0 的掩碼

-h socket... or --host=socket... --docker 服務端接收命令的通道

--icc=true|false --是否支援容器之間進行通訊

--ip-forward=true|false --請看下文容器之間的通訊

--iptables=true|false --禁止 docker 新增 iptables 規則

--mtu=bytes --容器網路中的 mtu

下面2個命令選項既可以在啟動服務時指定,也可以 docker 容器啟動( docker run )時候指定。在

docker 服務啟動的時候指定則會成為預設值,後面執行 docker run 時可以覆蓋設定的預設值。

--dns=ip_address... --使用指定的dns伺服器

--dns-search=domain... --指定dns搜尋域

最後這些選項只有在 docker run 執行時使用,因為它是針對容器的特性內容。

-h hostname or --hostname=hostname --配置容器主機名

--link=container_name:alias --新增到另乙個容器的連線

--net=bridge|none|container:name_or_id|host --配置容器的橋接模式

-p spec or --publish=spec --對映容器埠到宿主主機

-p or --publish-all=true|false --對映容器所有埠到宿主主機

容器訪問控制

容器的訪問控制,主要通過 linux 上的 iptables 防火牆來進行管理和實現。 iptables 是 linux 上預設

的防火牆軟體,在大部分發行版中都自帶。

容器訪問外部網路

容器要想訪問外部網路,需要本地系統的**支援。在linux 系統中,檢查**是否開啟。

$sysctl net.ipv4.ip_forward

net.ipv4.ip_forward = 1

如果為 0,說明沒有開啟**,則需要手動開啟。

$sysctl -w net.ipv4.ip_forward=1

如果在啟動 docker 服務的時候設定 --ip-forward=true , docker 就會自動設定系統的 ip_forward 引數為 1。

容器之間訪問

容器之間相互訪問,需要兩方面的支援。

容器的網路拓撲是否已經互聯。預設情況下,所有容器都會被連線到 docker0 網橋上。

本地系統的防火牆軟體 -- iptables 是否允許通過。

訪問所有埠

當啟動 docker 服務時候,缺省會新增一條**策略到 iptables 的 forward 鏈上。

預設情況下,不同容器之間是允許網路互通的。如果為了安全考慮,可以在 /etc/default/docker

檔案中配置 docker_opts=--icc=false 來禁止它。

容器訪問控制

iptables -nl

啟動容器( docker run )時使用 --link=container_name:alias 選項。docker 會在 iptable

中為 兩個容器分別新增一條 accept 規則,允許相互訪問開放的埠(取決於 dockerfile 中的 expose

行)。當新增了 --link=container_name:alias 選項後,新增了 iptables 規則。

注意: --link=container_name:alias 中的 container_name 目前必須是 docker 分配的名字,或使用

--name 引數指定的名字。主機名則不會被識別。

檢視nat(網路位址轉換)表

iptables -t nat -nl

如果希望永久繫結到某個固定的 ip 位址,可以在 docker 配置檔案 /etc/default/docker 中指定

docker_opts="--ip=ip_address" ,之後重啟 docker 服務即可生效。

docker網路配置

檢視docker網路 docker network ls 檢視bridge 的ip docker inspect id 啟動乙個映象名字為aaa 設定網路host 網路預設為 bridge docker run itd name bbb centos bash host 網路ip和虛擬機器一樣 我們...

Docker網路配置

1 在沒有任何docker容器啟動時的原始宿主機網路如下 1.回環 2.物理網絡卡 3.4虛擬機器的 5.docker的網絡卡 2 啟動tomcat容器 docker run d p name tomcat test tomcat p是隨機埠 檢視當前已經有乙個啟動中的容器,是我們制定的tomcat...

Docker 網路配置

docker 為我們提供了多種型別的網路模式,我們可以根據自己的需求使用系統預設的網路或者建立自己的網路。在我們安裝完 docker enginee 後,會自動生成3種預設的網路模式。我們可以執行命令檢視 bridge 使用docker 0 網路,containers只能在乙個host上面進行通訊。...