?
? ????? PHP ??? ???? ??? ?? ??
創(chuàng)建網絡
docker network create [OPTIONS] NETWORK
名稱,簡寫 | 默認 | 描述 |
---|---|---|
--attachable | false | 啟用手動容器附件 |
--aux地址 | map[] | 網絡驅動程序使用的輔助IPv4或IPv6地址 |
--config-from | 從中復制配置的網絡 | |
--config-only | false | 創(chuàng)建一個僅配置網絡 |
--driver,-d | bridge | 驅動程序來管理網絡 |
--gateway | 主子網的IPv4或IPv6網關 | |
--ingress | false | 創(chuàng)建群體路由網狀網絡 |
--internal | false | 限制對網絡的外部訪問 |
--ip-range | 從子范圍分配容器IP | |
--ipam-driver | default | IP地址管理驅動程序 |
--ipam-opt | map[] | 設置IPAM驅動程序特定選項 |
--ipv6 | false | 啟用IPv6網絡 |
--label | 在網絡上設置元數(shù)據 | |
--opt, -o | map[] | 設置驅動程序特定選項 |
--scope | 控制網絡的范圍 | |
--subnet | 表示網段的CIDR格式的子網 |
命令 | 描述 |
---|---|
docker網絡 | 管理網絡 |
命令 | 描述 |
---|---|
docker network connect | 將容器連接到網絡 |
docker network create | 創(chuàng)建一個網絡 |
docker network disconnect | 從網絡斷開容器 |
docker network inspect | 顯示一個或多個網絡的詳細信息 |
docker network ls | 列出網絡 |
docker network prune | 刪除所有未使用的網絡 |
docker network rm | 刪除一個或多個網絡 |
創(chuàng)建一個新的網絡。在DRIVER
接受bridge
或者overlay
它們是內置的網絡驅動程序。如果您已經安裝了第三方或您自己的自定義網絡驅動程序,您也可以DRIVER
在此處指定。如果您不指定該--driver
選項,該命令將自動bridge
為您創(chuàng)建一個網絡。當您安裝Docker Engine時,它會bridge
自動創(chuàng)建一個網絡。該網絡對應于docker0
引擎?zhèn)鹘y(tǒng)依賴的橋梁。當你啟動一個新的容器時,docker run
它會自動連接到這個網橋。您無法刪除此默認橋接網絡,但可以使用該network create
命令創(chuàng)建新橋接網絡。
$ docker network create -d bridge my-bridge-network
橋接網絡是單個引擎安裝中的隔離網絡。如果您想創(chuàng)建一個跨多個運行引擎的多個Docker主機的overlay
網絡,則必須創(chuàng)建一個網絡。與bridge
網絡不同,覆蓋網絡在創(chuàng)建之前需要一些預先存在的條件。這些條件是:
訪問鍵值存儲。引擎支持Consul,Etcd和ZooKeeper(分布式存儲)鍵值存儲。
連接到鍵值存儲的主機集群。
daemon
集群中每臺主機上配置正確的引擎。
dockerd
支持overlay
網絡的選項有:
--cluster-store
--cluster-store-opt
--cluster-advertise
要詳細了解這些選項以及如何配置它們,請參閱“ 多主機網絡入門 ”。
雖然不是必需的,但安裝Docker Swarm來管理組成網絡的集群是一個不錯的主意。Swarm提供了復雜的發(fā)現(xiàn)和服務器管理工具,可以幫助您實施。
準備好overlay
網絡先決條件后,只需在集群中選擇Docker主機并發(fā)出以下命令即可創(chuàng)建網絡:
$ docker network create -d overlay my-multihost-network
網絡名稱必須是唯一的。Docker守護進程嘗試識別命名沖突,但不能保證。避免名稱沖突是用戶的責任。
當您啟動容器時,請使用--network
標志將其連接到網絡。本例將busybox
容器添加到mynet
網絡中:
$ docker run -itd --network=mynet busybox
如果要在容器已經運行后將容器添加到網絡,請使用docker network connect
子命令。
您可以將多個容器連接到同一個網絡。連接后,容器只能使用另一個容器的IP地址或名稱進行通信。對于overlay
支持多主機連接的網絡或自定義插件,連接到相同多主機網絡但從不同引擎啟動的容器也可以通過這種方式進行通信。
您可以使用該docker network disconnect
命令從網絡斷開容器。
在創(chuàng)建網絡時,Engine默認會為網絡創(chuàng)建一個不重疊的子網。這個子網不是現(xiàn)有網絡的細分。這純粹是為了ip地址的目的。您可以覆蓋此默認值并直接使用--subnet
選項指定子網值。在bridge
網絡上,您只能創(chuàng)建一個子網:
$ docker network create --driver=bridge --subnet=192.168.0.0/16 br0
另外,您還可以指定--gateway
--ip-range
和--aux-address
選項。
$ docker network create \ --driver=bridge \ --subnet=172.28.0.0/16 \ --ip-range=172.28.5.0/24 \ --gateway=172.28.5.254 \ br0
如果您省略--gateway
標志,引擎會從首選池中為您選擇一個。對于overlay
網絡和支持它的網絡驅動程序插件,您可以創(chuàng)建多個子網。
$ docker network create -d overlay \ --subnet=192.168.0.0/16 \ --subnet=192.170.0.0/16 \ --gateway=192.168.0.100 \ --gateway=192.170.0.100 \ --ip-range=192.168.1.0/24 \ --aux-address="my-router=192.168.1.5" --aux-address="my-switch=192.168.1.6" \ --aux-address="my-printer=192.170.1.5" --aux-address="my-nas=192.170.1.6" \ my-multihost-network
確保你的子網不重疊。如果他們這樣做,網絡創(chuàng)建失敗,引擎返回錯誤。
在創(chuàng)建自定義網絡時,默認網絡驅動程序(即bridge
)具有可以傳遞的其他選項。以下是用于docker0橋的那些選項和等效的docker守護進程標志:
選項 | 當量 | 描述 |
---|---|---|
com.docker.network.bridge.name | - | 在創(chuàng)建Linux橋時要使用的橋名稱 |
com.docker.network.bridge.enable_ip_masquerade | --ip-masq | 啟用IP偽裝 |
com.docker.network.bridge.enable_icc | --icc | 啟用或禁用集裝箱間連接 |
com.docker.network.bridge.host_binding_ipv4 | --ip | 綁定容器端口時的默認IP |
com.docker.network.driver.mtu | --mtu | 設置容器網絡MTU |
以下參數(shù)可以傳遞給docker network create
任何網絡驅動程序,同樣也可以傳遞給它們的近似等價物docker daemon
。
論據 | 當量 | 描述 |
---|---|---|
--gateway | - | 主子網的IPv4或IPv6網關 |
--ip范圍 | --fixed,CIDR | 從一個范圍分配IP |
- 內部 | - | 限制對網絡的外部訪問 |
--ipv6 | --ipv6 | 啟用IPv6網絡 |
--subnet | --bip | 網絡子網 |
例如,讓我們使用-o
或--opt
在發(fā)布端口時指定IP地址綁定的選項:
$ docker network create \ -o "com.docker.network.bridge.host_binding_ipv4"="172.19.0.1" \ simple-network
默認情況下,當您將容器連接到overlay
網絡時,Docker也會將橋接網絡連接到它以提供外部連接。如果您想創(chuàng)建一個外部隔離的overlay
網絡,您可以指定該--internal
選項。
您可以創(chuàng)建將用于在群集中提供路由網格的網絡。您可以通過--ingress
在創(chuàng)建網絡時指定。當時只能創(chuàng)建一個入口網絡。只有在沒有服務依賴它的情況下才能刪除網絡。除了--attachable
選項之外,創(chuàng)建入口網絡時創(chuàng)建覆蓋網絡時可用的任何選項也可用。
$ docker network create -d overlay \ --subnet=10.11.0.0/16 \ --ingress \ --opt com.docker.network.mtu=9216 \ --opt encrypted=true \ my-ingress-network