0%

如何给docker容器指定固定ip

如何给docker容器指定固定ip

docker网络模式有bridge,host,none三种,默认使用bridge桥接模式,但是此模式默认只能使用DHCP自动分配IP,而且不能使用服务名字作为host直接访问,这会导致每次重启容器,IP都会变动,不易维护。要想使用固定IP,只能使用自建的docker网络。

  1. .创建自定义bridge网络

    1
    docker network create --driver bridge --subnet=10.0.2.0/24 --gateway=10.0.2.1 mynet	  
  2. docker-compose指定网络,并设置ip

    部署mysql8,指定IP地址10.0.2.2

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    version: "3"
    services:
    mysql:
    image: mysql:8.0
    container_name: mysql8
    hostname: mysql8
    restart: unless-stopped
    networks:
    mysql_net:
    ipv4_address: 10.0.2.2 #指定容器内固定ip
    ports:
    - "3306:3306"
    volumes:
    - /xxx/my.conf:/etc/mysql/my.cnf
    - /xxx/logs:/var/log
    - /xxx/data:/var/lib/mysql
    environment:
    PUID: 0
    PGID: 0
    TZ: Asia/Shanghai
    networks:
    mysql_net:
    external:
    name: mynet #使用自定义网络

    部署freshrss,指定IP地址10.0.2.3

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25

    version: "3"
    services:
    freshrss-app:
    image: freshrss/freshrss:latest
    container_name: freshrss-app
    hostname: freshrss-app
    restart: unless-stopped
    networks:
    freshrss_net:
    ipv4_address: 10.0.2.3
    ports:
    - "12080:80"
    volumes:
    - /xxx/data:/var/www/FreshRSS/data
    - /xxx/extensions:/var/www/FreshRSS/extensions
    environment:
    PUID: 1000
    PGID: 0
    CRON_MIN: '*/45'
    TZ: Asia/Shanghai
    networks:
    freshrss_net:
    external:
    name: mynet

    这样即可在freshrss配置中指定mysql的host为mysql8,容器内达到网络互通

-------------本文结束感谢您的阅读-------------