CodeGym /Adesua ahorow /Docker SELF /建立和管理網路

建立和管理網路

Docker SELF
等級 17 , 課堂 1
開放

2.1 基本指令 docker network

Docker中的網路允許container彼此互動,也能和外部網路對接。docker network指令提供了靈活的創建、配置和管理網路的功能,確保container網路互動的隔離性和控制性。在這堂課程中,我們會詳細探討docker network指令及其在網路管理中的應用方式。

基本指令docker network

  1. docker network create
  2. docker network ls
  3. docker network inspect
  4. docker network connect
  5. docker network disconnect
  6. docker network rm

創建網路:指令 docker network create

指令docker network create用於創建新的網路。你可以使用不同的drivers來創建網路,例如bridgehostoverlaymacvlan

使用bridge driver創建網路的範例

Terminal


docker network create --driver bridge my_bridge_network 

使用overlay driver創建網路的範例

Terminal


docker network create --driver overlay my_overlay_network 

使用macvlan driver創建網路的範例

Terminal

docker network create --driver macvlan \
  --subnet=192.168.1.0/24   \
  --gateway=192.168.1.1 \
  -o parent=eth0 my_macvlan_network

2.2 網路操作指令

1. 查看可用的網路:指令 docker network ls

指令 docker network ls 顯示所有在 Docker 中創建的網路清單。

Terminal


docker network ls 

指令輸出應如下所示:

Terminal


NETWORK ID          NAME                DRIVER              SCOPE
0e7e2d58fe94        bridge              bridge              local
9c84fdfc69ee        host                host                local
71cfb6a79d9e        none                null                local

2. 查看網路資訊:指令 docker network inspect

指令 docker network inspect 允許獲取特定網路的詳細資訊,包括已連接的容器、子網與閘道設置。

使用範例:

Terminal


docker network inspect my_bridge_network 

指令輸出將包含以 JSON 格式顯示的網路資訊:

JSON

[
    {
        "Name": "my_bridge_network",
        "Id": "0e7e2d58fe94",
        "Created": "2021-01-01T00:00:00.000000000Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {
            "container_id": {
                "Name": "my_container",
                "EndpointID": "6c52f8c75c1e",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

3. 將容器連接到網路:指令 docker network connect

指令 docker network connect 用於將已運行的容器連接到已存在的網路。

使用範例:

Terminal


docker network connect my_bridge_network my_container 

4. 將容器從網路斷開:指令 docker network disconnect

指令 docker network disconnect 用於將容器從網路中斷開連接。

使用範例:

Terminal


docker network disconnect my_bridge_network my_container 

5. 刪除網路:指令 docker network rm

指令 docker network rm 用於刪除網路。請注意,只有將所有連接的容器都斷開後,才能刪除網路。

使用範例:

Terminal


docker network rm my_bridge_network 

2.3 docker network 指令示例

docker network 指令的使用示例

示例 1: 創建並使用 bridge 網絡

創建網絡:

Terminal

docker network create --driver bridge my_bridge_network 

運行容器並將其連接到網絡:

Terminal

docker run -d --name container1 --network my_bridge_network nginx

docker run -d --name container2 --network my_bridge_network redis 

檢查網絡:

Terminal

docker network inspect my_bridge_network 

指令 docker network inspect 的輸出將包含網絡的詳細信息,以 JSON 格式顯示。為了讓輸出更易讀,可以使用工具 jq:

Terminal

docker network inspect my_bridge_network | jq

這對於過濾和結構化查看網絡數據很方便,比如連接的容器、它們的 IP 地址和子網設置。

示例 2: 連接和斷開容器

運行容器:

Terminal

docker run -d --name my_container nginx 

將容器連接到網絡:

Terminal

docker network connect my_bridge_network my_container 

將容器從網絡上斷開:

Terminal

docker network disconnect my_bridge_network my_container 
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION