【问题标题】:How to assign static ip for docker containers (docker compose) in windows WSL2?如何在 Windows WSL2 中为 docker 容器(docker compose)分配静态 ip?
【发布时间】:2021-04-07 15:01:25
【问题描述】:

我使用 docker compose 构建服务,我想将 mysql 设置为静态,我尝试使用 networks 指令但它不起作用,错误说 ip 已经被占用,每次我重新启动 windows ,mysql ip被改变了,有时是172.18.0.3,或者172.18.0.4,有谁知道如何给容器分配一个静态ip?这是yml

version: '3.7'
services:
  nginx:
    container_name: hki_nginx
    image: nginx:latest
    ports:
      - 80:80
      - 4433:443
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf    
      - ./nginx/conf:/etc/nginx/conf.d
      - ./src:/var/www
    links:
      - php
      - php72
  php:
    container_name: hki_php
    image: php:5.6-fpm-ext1
    volumes:
      - ./src:/var/www
      - ./php/php.ini:/usr/local/etc/php/php.ini
      - ./php/php-fpm.conf:/usr/local/etc/php-fpm.d/www.conf
      #- ./php/phpfpm/:/usr/local/etc/php-fpm.d/
  php72:
    container_name: web_php
    image: php:7.2-fpm-ext2
    volumes:
      - ./src:/var/www
      - ./php72/php.ini:/usr/local/etc/php/php.ini
      - ./php72/php-fpm.conf:/usr/local/etc/php-fpm.d/www.conf
      #- ./php/phpfpm/:/usr/local/etc/php-fpm.d/      
  mysql:
    container_name: hki_mysql
    image: mysql:5.7
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./mysql/init:/docker-entrypoint-initdb.d/
    ports: 
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=*Abcd1234
      - MYSQL_USER=abc
      - MYSQL_PASS=*Abcd1234
    #networks:
        #default:
            #ipv4_address: 172.18.0.3 

【问题讨论】:

  • 你能把这个减少到minimal reproducible example,并包括你得到的实际错误吗? (删除不必要的容器,volumes:,像 links: 这样的过时选项,以及像 container_name: 这样的覆盖;仅包含演示问题所需的最少代码。)解释为什么您尝试手动设置也可能会有所帮助IP 地址,因为您通常不需要直接访问它们。

标签: docker docker-compose wsl-2


【解决方案1】:

这是因为您注释了为您的 mysql 容器分配静态 IP 的部分

 mysql:
    ...
    #networks:
        #default:
            #ipv4_address: 172.18.0.3

如果你拿走#,它将有一个静态IP。

您可能忘记了docker-compose.yml 中的顶级network 部分,因为 official doc setting static IP 状态

networks:
  app_net:
    ipam:
      driver: default
      config:
        - subnet: 172.18.0.0/24

【讨论】:

  • "但是没用,报错说ip已经被占用了"
  • 如果您可以尝试,我编辑了我的回复以获取建议
猜你喜欢
  • 2015-03-12
  • 2017-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
相关资源
最近更新 更多