• docker下不同容器的网络互相访问问题


    目录

    背景

    ​编辑

    docker网络模式

    解决方法

    mysql下 docker-compose下网络设置

    nacos

    效果


    背景

    我这边有两个容器,宿主机ip为 192.168.1.115,一个mysql,一个nacos,部署在主机上,使用的默认网络bridge,想从nacos里面来使用mysql的库,发现不能使用主机的ip,现状:

    查看当前网络

    docker network ls

    是因为容器间网络不互通的问题,

    docker网络模式

    • host模式:和宿主机共用一个Network
    • bridge模式:默认网络模式,实际是在iptables做了DNAT规则,实现端口转发功能
    • none模式:拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。没有办法联网,封闭的网络能很好的保证容器的安全性。
    • container模式:和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享

    解决方法

    思路为创建一个共用网络,

     创建网络

    docker network create dev

    删除网络

     docker network rm mysql_default

    mysql下 docker-compose下网络设置

    version: '3.1'
    services:
      mysql:
        image: mysql:8.0.17
        restart: always
        container_name: mysql
        privileged: true
        ports:
          - 3306:3306
        environment:
          TZ: Asia/Shanghai
          MYSQL_ROOT_PASSWORD: 111333
        command:
          --max_connections=1000
          --character-set-server=utf8mb4
          --collation-server=utf8mb4_general_ci
          --explicit_defaults_for_timestamp=true
          --lower_case_table_names=1
          --max_allowed_packet=128M
        volumes:
          - /apps/mysql/config:/etc/mysql
          - /apps/mysql/logs:/var/log/mysql
          - /apps/mysql/data:/var/lib/mysql
          - /apps/mysql/mysql-files:/var/lib/mysql-files/
        networks:
          - dev
    networks:
      dev:
        external: true

    创建一个mysql容器,使用这个dev,启动

    查看网络状态

    docker inspect dev

     mysql,已经挂到了这个网络下

    nacos

    可以直接使用容器名称来代替ip:

    db.url.0=jdbc:mysql://mysql:3306/nacos

    1. version: '3'
    2. services:
    3. nacos:
    4. restart: always
    5. image: nacos/nacos-server:v2.2.1
    6. # 容器名称
    7. container_name: nacos
    8. # 端口映射
    9. ports:
    10. - 8108:8848
    11. - 9848:9848
    12. - 9849:9849
    13. # 容器权限
    14. privileged: true
    15. # 参数设置
    16. environment:
    17. JVM_XMS: 128m
    18. JVM_XMX: 128m
    19. JVM_MS: 64m
    20. JVM_MMS: 64m
    21. MODE: standalone
    22. NACOS_REPLICAS: 1
    23. PREFER_HOST_MODE: ip
    24. SPRING_DATASOURCE_PLATFORM: mysql
    25. MYSQL_SERVICE_HOST: mysql
    26. MYSQL_SERVICE_DB_NAME: nacos
    27. MYSQL_SERVICE_PORT: 3306
    28. MYSQL_SERVICE_USER: root
    29. MYSQL_SERVICE_PASSWORD: 113355
    30. volumes:
    31. - /apps/nacos/logs:/home/nacos/logs
    32. - /apps/nacos/plugins:/home/nacos/plugins
    33. - /apps/nacos/data:/home/nacos/data
    34. - /apps/nacos/config/application.properties:/home/nacos/conf/application.properties
    35. networks:
    36. - dev
    37. networks:
    38. dev:
    39. external: true
    1. ### If use MySQL as datasource:
    2. spring.datasource.platform=mysql
    3. ### Count of DB:
    4. db.num=1
    5. ### Connect URL of DB:
    6. db.url.0=jdbc:mysql://mysql:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
    7. db.user.0=root
    8. db.password.0=113355
    9. nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
    10. #
    11. #nacos.core.auth.enabled=true
    12. #nacos.core.auth.enable.userAgentAuthWhite=false
    13. #nacos.core.auth.server.identity.key=自定义的值
    14. #nacos.core.auth.server.identity.value=自定义的值

    效果

    启动后效果:

    两个容器都已经加入的这个网络,并且可以使用容器名字访问

    检查网络状态

  • 相关阅读:
    Spring Security入门
    分布式数字身份:通往Web3.0世界的个人钥匙
    杰哥不要DEVC++小游戏
    跨境电商在电商行业中是否还有立足之地?
    SpringMVC异常处理
    第十三章《搞懂算法:神经网络是怎么回事》笔记
    微搭低代码从入门到精通01-总体介绍
    新移动时代内容制作呈现与开发利器-Zoomla!逐浪CMS v8.6.2发布
    八、开发者工具与单元测试
    国家数据局正式揭牌,数据专业融合型人才迎来发展良机
  • 原文地址:https://blog.csdn.net/yu619251940/article/details/130860159