讓docker 每次建立docker compose 不要使用172.x.x.x來建立 虛擬網路給 containers使用
要讓 Docker Compose 每次建立網路時避免使用 172.x.x.x 這類網段,有兩種常見做法:
docker-compose.yml 中明確指定網路子網段你可以在 Compose 檔案裡定義自訂網路,指定 subnet,這樣就不會用到預設的 172.x.x.x:
version: "3.9"
services:
web:
image: nginx
networks:
- mynet
networks:
mynet:
driver: bridge
ipam:
config:
- subnet: 192.168.200.0/24
gateway: 192.168.200.1
subnet → 指定容器使用的網段,例如 192.168.200.0/24gateway → 指定網路的 gateway IPdocker compose up 都會建立在你指定的網段,而不是隨機挑選 172.x.x.x。如果你希望 所有 Docker 預設網路(包含 Compose 自動建立的)都不要用 172.x.x.x,可以在 /etc/docker/daemon.json 設定:
{
"default-address-pools": [
{
"base": "192.168.240.0/20",
"size": 24
}
]
}
default-address-pools → 定義 Docker 建立新網路時的預設地址池base → 起始網段size → 每個網路的子網大小sudo systemctl restart docker
這樣 Docker 在建立新網路(包含 Compose 自動建立的 bridge)時,就會從 192.168.240.0/20 裡分配,而不是用 172.x.x.x。
10.0.0.0/8192.168.0.0/16docker-compose.yml 裡明確指定網段,避免不同專案互相重疊。好問題 👍。當你在 Docker Daemon 的 /etc/docker/daemon.json 裡設定 default-address-pools 之後,Docker 在建立新的網路(包含 Docker Compose 自動建立的 bridge 網路)時,就會從你指定的範圍去分配子網段,而不是用預設的 172.x.x.x。
假設你在 /etc/docker/daemon.json 裡加上:
{
"default-address-pools": [
{
"base": "192.168.240.0/20",
"size": 24
}
]
}
base → 起始網段是 192.168.240.0/20,這個範圍涵蓋 192.168.240.0 到 192.168.255.255。size → 每個新網路分配一個 /24 子網段。當你執行不同的 Docker Compose 專案時,Docker 會依序分配:
192.168.240.0/24,gateway 192.168.240.1192.168.241.0/24,gateway 192.168.241.1192.168.242.0/24,gateway 192.168.242.1192.168.255.0/24192.168.240.0/20 這個範圍內,不會再用到 172.x.x.x。size: 24,每個新網路就是一個 /24,最多可以分配 16 個網路(因為 /20 裡有 16 個 /24)。size 設大一點,例如 /16,但要小心避免跟外部網段衝突。假設你在 /etc/docker/daemon.json 裡加上:
{
"default-address-pools": [
{
"base": "192.168.240.0/20",
"size": 24
}
]
}
base → 起始網段是 192.168.240.0/20,這個範圍涵蓋 192.168.240.0 到 192.168.255.255。size → 每個新網路分配一個 /24 子網段。當你執行不同的 Docker Compose 專案時,Docker 會依序分配:
192.168.240.0/24,gateway 192.168.240.1192.168.241.0/24,gateway 192.168.241.1192.168.242.0/24,gateway 192.168.242.1192.168.255.0/24192.168.240.0/20 這個範圍內,不會再用到 172.x.x.x。size: 24,每個新網路就是一個 /24,最多可以分配 16 個網路(因為 /20 裡有 16 個 /24)。size 設大一點,例如 /16,但要小心避免跟外部網段衝突。| File12 | File | Last Modified |
|---|---|---|
| 要把 Docker 版本從 29 降到 28,同時保留原本的容器不受影響 | 要把 Docker 版本從 29 降到 28,同時保留原本的容器不受影響 | 1:23 AM - December 07, 2025 |
| 要建立並在背景執行一個 Docker Compose | 要建立並在背景執行一個 Docker Compose | 1:23 AM - December 07, 2025 |
| 完整移除一個 Docker container | 完整移除一個 Docker container | 1:23 AM - December 07, 2025 |
| 完整停止一個 Docker Compose | 完整停止一個 Docker Compose | 1:23 AM - December 07, 2025 |
| 停止一個正在執行的 Docker container | 停止一個正在執行的 Docker container | 1:23 AM - December 07, 2025 |
| Windows containers | Windows containers | 1:23 AM - December 07, 2025 |
| portainer container unreachable問題 | portainer container unreachable問題 | 1:23 AM - December 07, 2025 |
| docker列出 所有容器的網域 (network) 與 IP 位址 | docker列出 所有容器的網域 (network) 與 IP 位址 | 1:23 AM - December 07, 2025 |
| Docker 容器管理速查表 | Docker 容器管理速查表 | 1:23 AM - December 07, 2025 |
| Docker 容器的 虛擬 IP 固定 | Docker 容器的 虛擬 IP 固定 | 1:23 AM - December 07, 2025 |
| docker 列出目前沒有被用的虛擬網路和網域IP | docker 列出目前沒有被用的虛擬網路和網域IP | 1:23 AM - December 07, 2025 |
| 避免 Docker 自動使用 172.x.x.x 這類網段來建立虛擬網路 | 避免 Docker 自動使用 172.x.x.x 這類網段來建立虛擬網路 | 8:20 PM - December 06, 2025 |