同一台宿主机不同的docker-compose下的容器互相通信;查看docker的network使用情况

这篇具有很好参考价值的文章主要介绍了同一台宿主机不同的docker-compose下的容器互相通信;查看docker的network使用情况。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

我的docker版本:24.0.2
docker-compose版本:1.29.2
linuxubuntu 20.04

在使用docker部署环境的时候大多用docker-compose来编排,参数的配置会清晰一点。

通常一个容器一个docker-compose.yml文件。
这就使得不同docker-compose下的容器不能自动的互相通信。
那么顺着这个思路往下想,就需要让他们都加入同一个网络,问题就解决了。

加入同一网络方案

先创建一个公共网络

sudo docker network create dev_net 

在各自的docker-compose文件中声明该网络。
比如我这里有mysqlnacos两个容器,加入同一个网络后可以直接用容器name来通信,并且端口可以直接使用容器内的端口.

启动之后可以可以容器内部,然后ping一下对方的容器name来测试下,如果ping不通;此时可以手动让容器加入同一个网络。

该方案也适用于那些没有在docker-compose中配置网络的容器,相当于手动让他们加入同一个网络

docker network connect dev_net nacos

mysql

version: '3'
services:
  mysql:
    image: mysql:5.7.35 #镜像名称以及版本
    deploy:
      resources:
          limits:
             memory: 1G
    restart: always #重启docker后该容器也重启
    container_name: mysql_5_7 #容器名称
    networks:
        - dev_net
    environment:
      MYSQL_ROOT_PASSWORD: xxxx #指定用户密码
      TZ: Asia/Shanghai
    ports:
      - 33306:3306 #本地端口号与容器内部端口号
    volumes: #指定挂载目录
      - ./data:/var/lib/mysql
      - ./conf/my.cnf:/etc/mysql/my.cnf

networks:        
  dev_net:
     external: true

nacos文章来源地址https://www.toymoban.com/news/detail-718130.html

version: '3'

services:
  nacos:
    image: nacos/nacos-server:v2.0.4
    container_name: nacos
    networks:
       - dev_net
    restart: always
    ports:
      - 8848:8848
      - 9848:9848
      - 9849:9849
    environment:
      TZ: Asia/Shanghai
      MODE: standalone
      SPRING_DATASOURCE_PLATFORM: mysql
      #加入同一个网络后可以直接使用容器name来通信
      MYSQL_SERVICE_HOST: mysql_5_7
      #直接连接容器端口,不是映射到宿主机的端口
      MYSQL_SERVICE_PORT: xxx
      MYSQL_SERVICE_USER: x
      MYSQL_SERVICE_PASSWORD: xxxxx
      MYSQL_SERVICE_DB_NAME: nacos_config
      MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
    volumes:
      - ./logs/:/home/nacos/logs

networks:        
  dev_net:
     external: true      

查看docker的network使用情况

#查看所有的网络
docker network ls

#删除某个网络---删除前要断开正在使用这个网络的容器
docker network rm 网络名

#将容器从某个网络中断开
docker network disconnect <network_name> <container_name_or_id>

#查看某个网络中使用的容器name列表
docker network inspect 网络名称 --format='{{ range $key, $value := .Containers }}{{ $value.Name }} {{ end }}'

到了这里,关于同一台宿主机不同的docker-compose下的容器互相通信;查看docker的network使用情况的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker使用宿主机代理

    我是在ubuntu虚拟机里面装的docker,尝试过docker里面装clash,但是失败了。使用上面的方法,docker容器内可以ping通github.com。ALL_PROXY里面的端口号因人而异。 docker 容器内使用宿主机的代理配置 | Zach Ke\\\'s Notes (kebingzao.com)

    2024年02月16日
    浏览(60)
  • Docker:挂载宿主机的目录

    可以在docker run时通过: -v 宿主机目录:容器内目录 ,挂载宿主机的文件到容器: $ docker run -it -v /tmp/docker_share/:/tmp/share ubuntu /bin/bash 容器启动后,可以在容器里看到目录/tmp/share root@9d2d19b4923c:/tmp/share# touch test root@9d2d19b4923c:/tmp/share# ls test 在宿主机的/tmp/docker_share目录下也可以

    2024年02月09日
    浏览(40)
  • docker与宿主机共享内存通信

    docker中的进程要与宿主机使用共享内存通信,需要在启动容器的时候指定 “–ipc=host” 选项。然后再编写相应的共享内存的程序,一个跑在宿主机上,另一个跑在docker上面。 shm_data.h shm_slave.c makefile shm_data.h shm_master.c makefile Dockerfile 运行时需要先下载docker,获取支持c语言编译

    2024年02月07日
    浏览(46)
  • Jenkins容器使用宿主机Docker

    构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可。 设置Jenkins容器使用宿主机Docker 设置宿主机docker.sock权限: 添加数据卷

    2024年01月18日
    浏览(48)
  • Docker容器内执行宿主机指令

            最近项目有个需求,需要程序配置服务器IP并且可以重启服务器。如果程序直接部署在服务器,相信大家都会操作。但是程序是用docker运行的,在docker中执行指令就很麻烦了。这时候需要添加容器一些特殊的权限和执行一些特殊的命令就可以执行宿主机上面的指令

    2024年02月09日
    浏览(54)
  • docker 容器与宿主机时间同步

    1.docker run 2.Docker file 3.docker-compose 4.宿主机直接执行命令给某个容器同步时间 注意:这种方式需要重启容器 docker exec -it 70ec41893d66 /bin/bash 回车后输入date验证即可

    2024年02月08日
    浏览(50)
  • Docker挂载-宿主机软连接目录-问题

    挂载宿主机软连接的路径问题【 -v /usr/local/nginx/:/home/test/nginx/ 】,软连接可以映射任何路径,但有一个前提是:其所映射的路径必须要在容器中存在,否则就无法访问到数据 1、如果软连接路径在容器中已经存在,如 /root/home ,或者在当前挂载命令 -v 前面的 -v 命令已经将软

    2024年02月22日
    浏览(58)
  • docker容器共享宿主机环境(目录挂载)

    一、背景介绍 如果开发的服务均需要将打成docker镜像,可是随着服务越来越多,镜像也越来越多。每次制作镜像的时候都需要将依赖打进容器,这样一个jre的环境就是100多M。有一天突发奇想,容器能不能共用宿主机的环境?这样每次打镜像时体积就会少不少。 二、测试 我们

    2024年02月09日
    浏览(60)
  • Jenkins(Docker版)中使用宿主机的Docker

    (1)宿主机安装好了Docker。 (2)宿主机拉取Jenkins的最新镜像。 使用Jenkins将打包好的镜像推送到远程镜像仓库时,运行docker login命令的时候,控制台报错:docker command not found。 Jenkins容器内部并没有安装Docker,但是我不想在内部再安装一个Docker,而是想直接使用使用宿主机

    2024年02月12日
    浏览(38)
  • docker搭建nginx并且挂载宿主机目录

    1、安装docker,这里就不赘述了 2、查看nginx版本 3、设置nginx对外的挂载目录 4、拷贝一份nginx.conf文件到/root/docker/nginx/conf/目录下 5、拉取相应的docker镜像 6、搭建nginx服务器 7、搭建完成之后查看容器的运行状态 8、至此,nginx就搭建完成了!!

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包