fangwenxue
V2EX  ›  问与答

docker 容器互相访问问题

  •  
  •   fangwenxue · Jan 15, 2022 · 3038 views
    This topic created in 1755 days ago, the information mentioned may be changed or developed.
    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:xxx@mongodb:27017 \
    
    • ServerSelectionTimeoutError("mongodb:27017: [Errno -2] Name or service not known, Timeout: 30s

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

    13 replies  •  2022-01-22 10:16:17 +08:00
    Hansah
    Hansah
    Jan 15, 2022
    1
    多挂个宿主目录啊,AB 都访问这个目录
    LLaMA2
    LLaMA2
    Jan 15, 2022
    2
    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
    fangwenxue
    OP
    Jan 15, 2022
    3
    @ye4tar 容器已经启动了,怎么添加网络
    sunny352787
    sunny352787
    Jan 15, 2022
    4
    容器名叫 mongo 为啥访问地址写的 mongodb ?
    fangwenxue
    fangwenxue
    OP
    Jan 15, 2022
    5
    @sunny352787 mongo 是镜像明。容器名是 mongodb
    sunny352787
    sunny352787
    Jan 15, 2022
    6
    @fangwenxue 哦,看错了,那这个就是网络问题了,或者像二楼那样重新设置网络,或者用 docker-compose 重新组成一个集群,如果不想关容器的话,由于你已经对外映射了端口那么可以直接访问宿主机的 IP:27017 这样连接 mongo
    ETiV
    ETiV
    Jan 15, 2022
    7
    docker run --help
    ...
    --link list Add link to another container
    ...
    lingex
    lingex
    Jan 15, 2022
    8
    1.两个容器都使用 --net=host
    2.另一个容器 --link=mongo

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

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

    如果相互依赖的容器比较多,推荐使用 docker-compose 进行管理。
    LLaMA2
    LLaMA2
    Jan 22, 2022
    13
    @fangwenxue
    docker container update —network brg-net --network-alias home_1 <容器名>
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1655 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 23:57 · PVG 07:57 · LAX 15:57 · JFK 18:57
    ♥ Do have faith in what you're doing.