博主在搭建链路追踪时发现需要访问es的docker容器,但是发现重启服务后ip就变了导致 一直无法连接到es的容器下面是博主解决这个问题的步骤
第一步 :查看docker 网络
docker network ls
ps: 这里的myNetwork是作者 刚创建的
第二步 :查看具体网络信息
docker inspect 1801f6ebf58a
可以看到这里 我们的三个应用 都用的这个网络
网络模式 :
- 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访问别的容器