天天看點

Docker配置設定靜态IP

一.引子

預設情況下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

Docker配置設定靜态IP
Docker配置設定靜态IP

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