V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
fangwenxue
V2EX  ›  问与答

docker 容器互相访问问题

  •  
  •   fangwenxue · 132 天前 · 1293 次点击
    这是一个创建于 132 天前的主题,其中的信息可能已经有所发展或是发生改变。
    docker ps 
    
    c1c0fd7328d4   mongo                       "docker-entrypoint.s…"   About an hour ago   Up About an hour   0.0.0.0:27017->27017/tcp, :::27017->27017/tcp   mongodb
    

    另外一个 docker 访问 mongodb 的时候

    docker run -d \
    	--name=pylist \
    	-p 12133:8080 \
    	-e MONGO_URI=mongodb://root:[email protected]:27017 \
    
    • ServerSelectionTimeoutError("mongodb:27017: [Errno -2] Name or service not known, Timeout: 30s

    • 容器之间互相怎么访问的?

    13 条回复    2022-01-22 10:16:17 +08:00
    siknet
        1
    siknet  
       132 天前
    多挂个宿主目录啊,AB 都访问这个目录
    ye4tar
        2
    ye4tar  
       132 天前
    docker network create brg-net
    docker run -it --name <容器名> —network brg-net --network-alias home_1 <镜像名>
    docker run -it --name <容器名> —network brg-net --network-alias school_1 <镜像名>

    如此这般,在 home_1 的环境中可以使用 school_1 的名字访问 school_1 的服务

    还有很多方法
    fangwenxue
        3
    fangwenxue  
    OP
       132 天前
    @ye4tar 容器已经启动了,怎么添加网络
    sunny352787
        4
    sunny352787  
       132 天前
    容器名叫 mongo 为啥访问地址写的 mongodb ?
    fangwenxue
        5
    fangwenxue  
    OP
       132 天前
    @sunny352787 mongo 是镜像明。容器名是 mongodb
    sunny352787
        6
    sunny352787  
       132 天前
    @fangwenxue 哦,看错了,那这个就是网络问题了,或者像二楼那样重新设置网络,或者用 docker-compose 重新组成一个集群,如果不想关容器的话,由于你已经对外映射了端口那么可以直接访问宿主机的 IP:27017 这样连接 mongo
    ETiV
        7
    ETiV  
       132 天前
    docker run --help
    ...
    --link list Add link to another container
    ...
    lingex
        8
    lingex  
       132 天前
    1.两个容器都使用 --net=host
    2.另一个容器 --link=mongo

    其中 2 这个方式有一些局限: 如果 mongo 容器没在运行,另一个容器也启动不了;
    并且如果 mongo 重建了,原先 link 它的容器也会失效

    用#2 的方式比较好。
    jfdnet
        9
    jfdnet  
       132 天前
    可以用 --link 其他容器,如果某个容器对其他容器有依赖。
    xzysaber
        10
    xzysaber  
       132 天前
    没有 link 。
    ouyanglong721
        11
    ouyanglong721  
       131 天前 via Android
    docker network create xxx 然后容器启动的时候指定新建的网络 ,容器间就可以通过 name 访问了,如果已经启动的容器可以通过 docker network connect/disconnect 重新连接新网络
    gam2046
        12
    gam2046  
       131 天前
    需要访问其他容器的容器在创建时添加 link 或 depend 参数,然后容器内可直接通过容器名进行访问。

    如果相互依赖的容器比较多,推荐使用 docker-compose 进行管理。
    ye4tar
        13
    ye4tar  
       126 天前
    @fangwenxue
    docker container update —network brg-net --network-alias home_1 <容器名>
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2620 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 03:56 · PVG 11:56 · LAX 20:56 · JFK 23:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.