一.引子
預設情況下Docker建立容器配置設定的IP都是随機的,甚至有些情況下是啥Host網絡之類的,除非進行端口映射,不然你都沒辦法通路到容器内的服務,這就對我們的某些需求很不利。我們有時候也需要固定該容器的IP,但是我們該怎樣解決呢?(朱天鵬)
二.解
1.搭建一個網卡
#這個預設是建立Bridge的,如果你需要bridge的網卡不是第一張(eth0啥的),請使用-o parent=eth1 來指定你的網卡,也能額外用–internal來限制可能的外網通路
docker network create --subnet=192.168.1.0/24 --gateway=192.168.1.1 docker-intranet
2.在容器上指定網卡和IP
sudo docker run --name postgres1 --net=docker-intranet --ip=192.168.1.3 -e POSTGRES_PASSWORD=password -p 5433:5432 -d postgres:9.4
compose檔案:
version: '2'
services:
postgres:
image: postgres:9.4
ports:
- 5432:5432
environment:
- POSTGRES_PASSWORD=password
networks:
docker-intranet:
ipv4_address: 192.168.1.3
ipv6_address: 2001:3984:3989::10
networks:
docker-intranet:
driver: bridge
enable_ipv6: true
ipam:
driver: default
config:
- subnet: 192.168.1.0/24
gateway: 192.168.1.1
- subnet: 2001:3984:3989::/64
gateway: 2001:3984:3989::1