> For the complete documentation index, see [llms.txt](https://cutejaneii.gitbook.io/docker/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cutejaneii.gitbook.io/docker/docker-network/qi-ta-zhong-yao-guan-nian.md).

# 容器的網路設定

輸入`docker network ls`列出目前的docker network

```
$ docker network ls
NETWORK ID     NAME     DRIVER    SCOPE
56e6b7438155   bridge   bridge    local
98a402d07220   host     host      local
9511eb2b9ea0   none     null      local
```

## Bridge Network

Bridge Network主要是透過Linux kernel一個叫做network namespace的功能來建立隔離式的網路。在Docker Daemon啟動時，會根據下列步驟建立一個docker0的網路介面

* 檢查docker0 bridge是否存在，如不存在則建立docker0 bridge
* 搜尋與當前路由不衝突的IP網段
* 選擇IP網段，並綁定至docker0

輸入`ifconfig docker0`可以查看相關資訊

```
root@vm:/home/jennifer# ifconfig docker0
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:34ff:fe9a:e7d1  prefixlen 64  scopeid 0x20<link>
        ether 02:42:34:9a:e7:d1  txqueuelen 0  (Ethernet)
        RX packets 2671008  bytes 258331993 (258.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2701399  bytes 289253518 (289.2 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
```

這個便是容器的預設網路，若在啟動容器時沒有指定，bridge network就是容器的網路模式。在bridge network上運行的容器可互相溝通，利用此模式建立的容器會有各自的IP address（如下圖）。

![](https://1309293527-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lt87Z2Vgpk1kICGRgqP%2F-MAy6o8d_SZ0H2jJS7RO%2F-MAy8dAh9T8PUE8Skclj%2Fcontainer_ip.png?alt=media\&token=1848ade4-f5a7-4568-a403-356901f71989)

## Host Network

若容器在建立時，設定`--net=host`，代表直接使用主機上的網路，若容器上的API運行在80 port，那麼這個80 port指的就是主機上的port。唯一要注意的是，若主機上的port已被其他程序使用，可能會導致容器啟動後無法正常使用。

## None Network

若容器在建立時，設定`--net=none`也就是關閉容器的網路

## Bridge Network與Host Network解釋

![](https://1309293527-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lt87Z2Vgpk1kICGRgqP%2F-MBHrD-VpYYJu0B1XGy5%2F-MBI7xjc8wrzujeaku-i%2Fdocker-DockerNetwork.png?alt=media\&token=1c055088-5e7f-4336-80fd-ba9d10fa671a)
