Docker學習(六) 網路使用與配置

2022-07-18 06:30:17 字數 2689 閱讀 5743

特別宣告:

博文主要是學習過程中的知識整理,以便之後的查閱回顧。部分內容**於網路(如有摘錄未標註請指出)。內容如有差錯,也歡迎指正!

**********===系列文章**********===

1. docker學習(一): 基本概念

2. docker學習(二): 映象的使用與構建

3. docker學習(三): dockerfile指令介紹

4. docker學習(四): 操作容器

5. docker學習(五): 倉庫與資料管理

6. docker學習(六): 網路使用與配置

一、埠對映

-p 或 -p 引數來指定埠對映,當-p標記時,docker會隨機對映乙個49000~49900的埠內部容器開放的網路埠。

-p:可以指定要對映的埠,並且在乙個指定埠上只可以繫結乙個容器。

格式:ip:hosrtport:containerport | ip::containerport | hostport:containerport

docker run -d -p 5000:5000 image command

docker run -d -p 127.0.0.1:5000:5000 image command

docker run -d -p 127.0.0.1::5000 iamge command

檢視對映埠配置:

docker port nostalgic_morse 5000

二·、容器互聯

容器的連線系統是除了埠對映外,另一種跟容器中應用互動的方式。該系統會在源和接收容器之間建立乙個隧道,接收容器可以看到源容器指定的資訊。

--link name:alias(name是要鏈結容器的名稱,alias是這個連線的別名)

docker run -d -p --name web --link db:db iamge command

docker在兩個互聯的容器之間建立了乙個安全隧道,而且不用對映它們的埠到宿主機上。docker通過2中方式為容器公開連線資訊:

1.環境變數,用env命令檢視

docker run --rm --name web2 --link db:db image env

2.更新/etc/hosts檔案  

docker run -it --rm --link db:db image /bin/bash

cat /etc/hosts  #檢視主機配置包含了連線的兩個容器

三、網路配置選項

指定容器掛在的網橋:-b bridge 或 --bridge=bridge

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

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

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

容器間通訊:--ip-forward=true|false

是否允許新增iptables規則:--iptables=true|false

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

以下2個選項既可以在啟動服務時指定,也可以docker容器啟動時候指定。在docker服務啟動的時候指定則會成為預設值,後面執行docker run時可以覆蓋設定的預設值。

指定dns伺服器:--dns=ip_address...

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

以下選項只有在docker run執行時使用,針對容器的特性內容。

配置容器主機名:-h hostname 或 --hostname=hostname

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

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

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

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

四、容器訪問控制(iptables防火牆來實現)

容器訪問外部網路:需要本地系統的**支援。

sysctl net.ipv4.ip_forward  #檢查**是否開啟

net.ipv4.ip_forward = 1  #如果為0,說明沒有開啟

sysctl -w net.ipv4.ip_forward=1  #開啟**

在啟動docker服務的時候設定--ip-forward=true,docker就會自動開啟**。

容器之間訪問:容器的網路拓撲是否已經互聯。預設情況下,所有容器都會被連線到docker0網橋上;本地系統的防火牆iptables是否允許通過。

訪問所有埠:當啟動docker服務時候,缺省會新增一條**策略到iptables的forward鏈上。策略為通過(accept)還是禁止(drop)取決於配置--icc=true(預設值)還是--icc=false。如果收到指定--iptables=false則不會新增iptables規則。預設情況下,不同容器之間是允許網路互通的。如果為了安全考慮,可以在/etc/default/docker檔案中配置docker_opts=--icc=false來禁止。

參考:

1.《docker_practice》

Docker學習筆記 三 網路

docker官方資料 網路分類 bridge 橋接網路 host 主機網路 overlay 覆蓋網路 macvlan 虛擬網絡卡 none 網路外掛程式 非docker官方提供 檢視docker網路 docker network ls docker預設使用的網路連線。簡單理解為,外界網路與宿主機本是...

docker學習篇(13) 網路基礎

概述 1 linux虛擬網橋 docker 通過linux虛擬網橋技術進行容器間的通訊,虛擬網橋相當於七層網路模型中的網路鏈路層 1 可以設定ip位址 2 相當於擁有一塊隱藏的虛擬網絡卡 2 docker0 安裝docker後會生成乙個預設的docker0虛擬網橋 ip 172.17.0.1,這個不...

docker學習筆記5 網路設定

在工作和學習中我們往往會涉及到多個docker之間內部通訊或docker與宿主主機外部通訊的情況,這些都是通過docker的網路設定來實現的。下面我們就來了解下docker的網路配置,以及相關設定。docker在預設情況下有以下三種網路配置方式,在docker安裝完成後也會預設進行建立 bridge...