隨著云原生應用的大力推進,容器技術越來越受到關注,其中 Docker 就是最受歡迎的一種容器化技術。在 Docker 的世界中,每個容器都有它自己獨立的網段,也就是容器網段。
容器網段是什么?簡單來說,就是給每個容器分配一個唯一的 IP,使得它們可以相互通信,也可以與外界通信。在 Docker 中,默認使用的容器網段是172.17.0.0/16
,也就是 CIDR 表示法中的一段 IP 地址空間。
當我們創建一個新的容器時,Docker 會自動分配一個新的 IP 地址給它,同時在宿主機上設置一個虛擬網卡連接容器和宿主機的網絡。容器之間可以直接通過 IP 地址互相訪問,也可以通過端口映射的方式暴露它們的服務給外界訪問。
# 創建一個新的容器,并分配一個 IP $ docker run -it --rm --name my-container ubuntu /bin/bash root@b36d6f56d6c1:/# ip addr 1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 inet 127.0.0.1/8 scope host lo 10: eth0@if11: mtu 1500 qdisc noqueue state UP group default inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
當然,如果默認的容器網段無法滿足需求,我們也可以通過修改 Docker 的配置來指定不同的網段。比如,可以在啟動 Docker daemon 時通過--bip
參數指定一個新的 IP 地址空間:
# 修改 Docker 的配置文件 $ sudo nano /etc/docker/daemon.json { "bip": "192.168.0.0/16" } # 重新加載 Docker 的配置 $ sudo systemctl reload docker
在這種情況下,Docker 就會使用192.168.0.0/16
這個網段來分配容器的 IP。