【问题标题】:Link two docker containers on Windows 10在 Windows 10 上链接两个 docker 容器
【发布时间】:2018-06-04 01:41:16
【问题描述】:

我的 mongo 容器正在运行:

docker run --security-opt=seccomp:unconfined -p 27017:27017 -p 28017:28017 --name mong --rm mong --link myapp

还有我的应用

docker run --rm -ti --security-opt=seccomp:unconfined -p8080:8080 --name myapp --link mong --expose 8080

当我运行docker port myapp

8080/tcp -> 0.0.0.0:8080

docker port mong 得到以下关注:

27017/tcp -> 0.0.0.0:27017

28017/tcp -> 0.0.0.0:28017

但是 myapp 没有看到 mong 端口。当我使用--net=host 标志运行docker run --rm -ti --security-opt=seccomp:unconfined -p8080:8080 --name myapp --link mong --expose 8080 时,myapp 开始看到mong 容器端口,但停止公开8080。

如何解决?怎么了?

【问题讨论】:

    标签: windows docker


    【解决方案1】:

    如果要链接两个或多个容器,可以使用network

    首先创建一个网络:

    $ docker network create --driver bridge dev_network
    

    现在使用 --net=dev_network 运行两个容器

    容器 1

    $ docker run --security-opt=seccomp:unconfined -p 27017:27017 -p 28017:28017 --name mong --rm mong --net=dev_network
    

    容器 2

    docker run --rm -ti --security-opt=seccomp:unconfined -p 8080:8080 --name myapp --net=dev_network
    

    您现在可以使用容器名称访问网络内的容器。

    【讨论】:

    • 主机可以访问8080上的myapp吗?
    • Docker 内的 myapp 正在等待与 127.0.0.1 上的 mongo 连接
    • 是的,-p(hostport:containerport) 标志定义了您希望从主机访问容器的端口。因此,如果您的应用在该端口上提供网页服务,您将使用 localhost:8080
    • 在您定义 mongo ip 地址的应用程序源代码中,您应该使用容器名称而不是 ip。由于您的应用位于容器内,因此它可以看到具有名称的其他容器。
    猜你喜欢
    • 2020-08-22
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 2020-11-17
    • 2018-01-21
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多