相关疑难解决方法(0)

容器"gcr.io/google_containers/pause:0.8.0"中的流程有什么作用?

我已经清楚地知道了--net=container:NAME_or_IDdocker 选项的用法,我也读过kubernetes的源代码,关于如何配置容器以使用网络InfraContainer,所以我认为容器gcr.io/google_containers/pause:0.8.0中进程的唯一工作就是"暂停",它永远不会做任何复杂的工作,如"接收","发送"或"路由".

但我不知道这件事,因为我无法找到Dockerfilegcr.io/google_containers/pause:0.8.0,所以我需要有人清楚地知道它告诉我真相,谢谢!

docker kubernetes

37
推荐指数
3
解决办法
1万
查看次数

使用 --net=container:containerName 键将 docker 容器附加到另一个容器的网络

我正在阅读 Jaroslaw Krochmalski 所著的《面向 Java 开发人员的 Docker 和 Kubernetes》一书,我偶然发现了以下示例。作者建议创建一个桥接myNetwork网络,然后运行连接到该网络的两个容器(Apache Tomcat 和 BusyBox),如下所示(命令应在单独的终端会话中运行):

$ docker run -it --name myTomcat --net=myNetwork tomcat
$ docker run -it --net container:myTomcat busybox
Run Code Online (Sandbox Code Playgroud)

作者特别指出“我们希望 busybox 容器使用与 Tomcat 使用的网络相同的网络。作为替代方案,我们当然可以使用该--net myNetwork选项显式指定网络名称”。

那么作者建议通过在busybox容器中运行以下命令来检查容器之间的通信:

$ wget localhost:8080
Run Code Online (Sandbox Code Playgroud)

这确实有效,但立即让我感到困惑,因为我们有两个不同的容器,并且不清楚为什么它们通过本地主机进行通信。事实证明,上面提到的带有密钥的命令并--net container:myTomcat没有完全将容器添加到网络中,而是使其在与myTomcat容器相同的 IP 下以某种方式可见。

观察结果证实了这一点,如果您运行docker network inspect myNetwork,您将看到实际上只有一个容器连接到网络:

[
    {
        "Name": "myNetwork",
        ...
        "Containers": {
            "464ed70a0c31784226dc943bcbcb79f7c4666b9d7825183706505731ac06a9bf": {
                "Name": "myTomcat",
                "EndpointID": "a4c384f17c6f8e443a430f130093ff6936bb59b1b54d0f056d1f0b4c703c1489",
                "MacAddress": "02:42:ac:14:00:02",
                "IPv4Address": "172.20.0.2/16",
                "IPv6Address": ""
            }
        },
        ...
    }
]
Run Code Online (Sandbox Code Playgroud)

相反,如果您 …

docker docker-network

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

docker ×2

docker-network ×1

kubernetes ×1