当前位置:   article > 正文

docker 如何访问宿主机的localhost_docker localhost

docker localhost

方法一:

1、可以在使用localhost的地方替换host.docker.internal

对于mac和windows,可以使用host.docker.internal替换127.0.0.1,如 mongodb://host.docker.internal:27017

2、对于linux可以使用:

创建一个桥接网络
下面的localNet是网络名字,可自行修改;关于192.168.0.0这个子网,也可以自行定义.
默认按照下面的命令,执行后将可以通过192.168.0.1访问宿主机.

docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 localNet


使用192.168.0.1替换127.0.0.1,如mongodb://192.168.0.1:27017

方法二:

可以在启动docker服务的时候把宿主机的ip当作环境变量穿进去

docker run -d --name nginx --env hostip="172.17.32.60" 

可以在容器里面env|grep hostip查看ip地址

在程序中可以使用代码查询这个环境变量

  1. // cmd 可以传入 env|grep hostip
  2. func Cmd(cmd string) []byte {
  3. out, err := exec.Command("/bin/bash", "-c", cmd).Output()
  4. if err != nil {
  5. return nil
  6. }
  7. return out
  8. }

拓展如何访问同一台机器上的其他docker

docker network --help

创建一个自定义的docker局域网

docker network create mynet 

然后在启动容器的时候,让容器加入局域网

  1. docker pull redis
  2. docker pull nginx
  3. #运行redis容器
  4. docker run -itd --name redis --network mynet --network-alias redis -p 6379:6379 redis
  5. #运行nginx容器
  6. docker run -d --name nginx -p 80:80 --network mynet --network-alias nginx --privileged=true -v /home/wwwroot:/home/wwwroot -v /home/wwwlogs:/home/wwwlogs nginx

可以使用如下命令查询网络的情况

docker network inspect mynet

当然可以使用docker network connect 加入相同的网段

  1. #加入nginx到mynet网络
  2. [root@localhost /]# docker network connect mynet nginx
  3. #加入redis到mynet网络
  4. [root@localhost /]# docker network connect mynet redis
  5. #查看mynet网络包含的容器,会发现两个容器都加入当前网络了,后面使用ping命令是能够ping通容器名称的。
  6. [root@localhost /]# docker network inspect mynet

参考:

docker network详解、教程_wangyue23com的博客-CSDN博客_docker network

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/176721
推荐阅读
相关标签
  

闽ICP备14008679号