博主在搭建链路追踪时发现需要访问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访问别的容器
若访问容器中服务,可以使用这种方式访问 <网络别名>:<服务端口号>
© 版权声明
文章版权归作者所有,未经允许请勿转载,侵权请联系 admin@trc20.tw 删除。
THE END