特別宣告:
博文主要是學習過程中的知識整理,以便之後的查閱回顧。部分內容**於網路(如有摘錄未標註請指出)。內容如有差錯,也歡迎指正!
**********===系列文章**********===
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...