當 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上面進行通訊。...