docker-compose管理容器network与ip问题

 更新时间:2024年01月09日 11:09:30   作者:binbreaze  
这篇文章主要介绍了docker-compose管理容器network与ip问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

docker-compose管理容器时,通常需要设定network,指定容器的ip,这样容器在启动时会通过指定的ip与宿主机桥接网络通信,同样可以通过ip实现容器之间的通信。

新建docker的network桥接网络

docker network create docker1 -o com.docker.network.bridge.name=docker1 -o com.docker.network.bridge.host_binding_ipv4=0.0.0.0 --driver=bridge --subnet=172.20.0.0/16 --gateway=172.20.0.1
  • docker1 桥接网卡名称
  • subnet 子网掩码
  • gateway 网关

查看新建网桥

docker network ls

docker network inspect docker1

docker容器

docker-compose.yml管理多个容器

version: '2'
networks:
  docker1:               ### 自建的network
    external: true
services:
 mgnt:
  image: mgnt
  container_name: mgnt
  hostname: mgnt
  restart: always
  command: supervisord -n -c /code/mgnt/supervisord.conf
  volumes:
   - /opt/mgnt/conf/serverConfig.json:/code/mgnt/frontend/static/serverConfig.json 
   - /opt/mgnt/conf/oem:/code/mgnt/frontend/static/img/oem
   - /opt/mgnt/conf/oem.json:/code/mgnt/frontend/static/oem.json
   - /opt/mgnt/conf/settings.py:/code/mgnt/backend/server/settings.py 
   - /opt/mgnt/conf/supervisord.conf:/code/mgnt/supervisord.conf 
   - /opt/mgnt/conf/redis/redis.conf:/etc/redis.conf 
   - /opt/mgnt/conf/license:/etc/fass/license
  ports:
   - "8000:8000"
   - "80:80"
  depends_on:
   - mgnt_mysql 
   - influxdb
  networks:
    docker1:
      ipv4_address: 172.20.0.3               ###容器固定ip 
 
 mgnt_mysql:
  image: mgnt_mysql
  container_name: mgnt_mysql
  hostname: mgnt_mysql
  restart: always
  ports:
   - 3308:3306
  volumes:
   - /opt/mgnt/data:/var/lib/mysql 
   - /opt/mgnt/conf/mysql/my.cnf:/etc/my.cnf 
   - /opt/mgnt/conf/mysql/conf.d:/etc/mysql/conf.d 
   - /opt/mgnt/conf/mysql/mysql.conf.d:/etc/mysql/mysql.conf.d 
  environment:
   - MYSQL_PORT=3306 
   - MYSQL_DATABASE=mgnt 
   - MYSQL_USER=admin 
   - MYSQL_PASSWORD=sysadmin 
   - MYSQL_ROOT_PASSWORD=sysadmin 
  networks:
    docker1:
      ipv4_address: 172.20.0.2
 influxdb:
  image: influxdb:alpine
  container_name: influxdb
  hostname: influx
  restart: always
  volumes:
    - /var/lib/influxdb:/var/lib/influxdb
  ports:
   - "8086:8086"
  networks:
    docker1:
      ipv4_address: 172.20.0.4

开启容器后docker1网桥内容

[
    {
        "Name": "docker1",
        "Id": "d1f2a4c0afe4b418e855dacc68f7fe3991d93b51c1ebd049ce1c5c81b598ae24",
        "Created": "2021-02-01T02:41:48.327058853-05:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.20.0.0/16",
                    "Gateway": "172.20.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "53b25b5832b6757f81653e2ed6f5a237d59950825c9e9015272dbd0ff673da5e": {
                "Name": "mgnt",
                "EndpointID": "0ed1a8d0d6cf444320e0fe985d2bcfcf70d80111b37928eb1519045f8ffa0336",
                "MacAddress": "02:42:ac:14:00:03",
                "IPv4Address": "172.20.0.3/16",            ### 容器ip
                "IPv6Address": ""
            },
            "b3623f6a04d56f7ade8022d289fbbd4fbd3409a5da1c08cd9293511b656481a5": {
                "Name": "mgnt_mysql",
                "EndpointID": "f05cf474e861e86e8cd7dfa6a5bdc43368c6af3b01e22d657f92b0a2ace913f1",
                "MacAddress": "02:42:ac:14:00:02",
                "IPv4Address": "172.20.0.2/16",           ### 容器ip
                "IPv6Address": ""
            },
            "e99f3d048e384732c12673989aea3814ecbf873e5850d87b36fe70d016861293": {
                "Name": "influxdb",
                "EndpointID": "17a3874417ee95b91c421a4beb281df067682eaf46e4f37ab929f76866b6c795",
                "MacAddress": "02:42:ac:14:00:04",
                "IPv4Address": "172.20.0.4/16",         ### 容器ip
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker1"
        },
        "Labels": {}
    }
]

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker搭建Minio容器的流程步骤(完整详细版)

    Docker搭建Minio容器的流程步骤(完整详细版)

    Minio 是一个基于Apache License v2.0开源协议的对象存储服务,虽然轻量,却拥有着不错的性能,它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,本文将给大家介绍Docker搭建Minio容器的流程步骤,需要的朋友可以参考下
    2024-08-08
  • 使用Docker部署 spring-boot maven应用的方法

    使用Docker部署 spring-boot maven应用的方法

    本篇文章主要介绍了使用Docker部署 spring-boot maven应用的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • docker安装rocketMQ教程(最详细)

    docker安装rocketMQ教程(最详细)

    这篇文章主要介绍了docker安装rocketMQ教程(最详细),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Docker 部署 PostgreSQL数据库的两种方式

    Docker 部署 PostgreSQL数据库的两种方式

    本文介绍了使用Docker部署PostgreSQL数据库的两种方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-07-07
  • Docker Gitlab+Jenkins+Harbor构建持久化平台操作

    Docker Gitlab+Jenkins+Harbor构建持久化平台操作

    这篇文章主要介绍了Docker Gitlab+Jenkins+Harbor构建持久化平台操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Vue.js中的watch属性详解

    Vue.js中的watch属性详解

    在Vue.js中,watch属性是一种非常重要的属性,它可以监听Vue实例中指定的数据变化,并在数据发生变化时执行相应的操作,本文将对 Vue.js中的watch属性进行详细的介绍,并附上相关的代码示例,需要的朋友可以参考下
    2023-06-06
  • Docker管理之碎片知识整理小结

    Docker管理之碎片知识整理小结

    本文旨在汇总整理Docker日常管理之知识碎片,以便日后回顾查看参考。文中通过示例代码介绍的非常详细,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Rocky Linux 9.2下使用dnf安装Docker全流程指南

    Rocky Linux 9.2下使用dnf安装Docker全流程指南

    Docker 是当前最流行的容器化平台,本文以 Rocky Linux 9.2 为例,详细介绍如何使用 dnf 命令安装 Docker,完成配置并进行基础使用,希望对大家有所帮助
    2025-08-08
  • docker从安装入门到应用部署及私有仓库搭建基础命令

    docker从安装入门到应用部署及私有仓库搭建基础命令

    这篇文章主要为大家介绍了docker从安装入门到应用部署及私有仓库搭建基础命令,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • Docker入门教程之本地打包docker镜像教程

    Docker入门教程之本地打包docker镜像教程

    Docker镜像是一个特殊的文件系统,既提供了运行时所需的程序、库和资源,还提供了相应的配置参数,只是不包含动态数据,下面这篇文章主要给大家介绍了关于Docker入门教程之本地打包docker镜像的相关资料,需要的朋友可以参考下
    2023-06-06

最新评论