docker 处理容器间互相调用(ip变动无法通信处理实践)

2023年 7月 19日 67.6k 0

博主在搭建链路追踪时发现需要访问es的docker容器,但是发现重启服务后ip就变了导致 一直无法连接到es的容器下面是博主解决这个问题的步骤
第一步 :查看docker 网络

docker network ls

image.png

ps: 这里的myNetwork是作者 刚创建的

第二步 :查看具体网络信息

docker inspect 1801f6ebf58a

image.png

可以看到这里 我们的三个应用 都用的这个网络

网络模式 :

  • bridge: 桥接 docker
  • none: 不配置网络
  • host: 和宿主机共享网络
  • container: 容器网络连通

第二步 :创建 网络(专门给docker通信用)

docker network create myNetwork

下面我们创建docker 容器时指定网络
我这里 有两个容器需要需要访问es容器
例如:elasticsearch 容器创建

docker run --name elasticsearch 
--restart always 
--network myNetwork   ## 设置网卡
--network-alias elasticearch   ## 设置网络别名
-p 9200:9200 -p 9300:9300 
-e  "discovery.type=single-node" 
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" 
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml 
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data 
-v  /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins 
-d elasticsearch:7.4.2

创建 skywalking-oap 容器 需要指定elasticsearch

docker run 
--name skywalking-oap 
--restart always 
--network myNetwork 
--network-alias skyOap 
-p 11800:11800 
-p 12800:12800 -d 
--privileged=true 
-e TZ=Asia/Shanghai 
-e SW_STORAGE=elasticsearch7 
-e SW_STORAGE_ES_CLUSTER_NODES=elasticearch:9200  ## 这里直接指定 别名加 端口直接就可以访问
-v /mydata/log/skyOap:/mydata/log/skyOap 
apache/skywalking-oap-server:8.6.0-es7 

创建 skywalking-ui 容器


docker run 
--name skywalking-ui 
--restart always 
--network myNetwork 
--network-alias skyUi 
-p 8091:8080 -d 
--privileged=true 
-e TZ=Asia/Shanghai 
-e SW_OAP_ADDRESS=skyOap:12800  ## 指向 skywalking-oap 容器
-v /mydata/log/skyUi:/mydata/log/skyUi 
apache/skywalking-ui:8.6.0

创建kibana 方便管理es

docker run --name kibana  
--restart always 
--network myNetwork 
--network-alias kibana 
-e ELASTICSEARCH_HOSTS=http://elasticearch:9200  ## 指向es 地址
-p 5601:5601  -d kibana:7.4.2

验证方式也很简单直接进到容器中ping访问别的容器

image.png

若访问容器中服务,可以使用这种方式访问 :

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论