admin管理员组

文章数量:1546041

前言

呵呵 最近遇到了这样的一个问题 

我主机上面启动了一个 docker 容器, 然后 我主机需要 访问这个 容器的 ip + port 拿数据 

然后 就 gg 了, 擦 这个问题 很让人不理解啊,, 然后 昨天这个问题 就先搁置在这里了 

然后 找朋友问了一下, 宿主机 可以访问 docker 容器的 ip + port 呀, 然后 就感觉 有点不明白了 

因此 昨天晚上 回到家里 做了一些测试 

 

主要测试的内容有以下几点 

1. 宿主机能否 ping 容器 

2. 宿主机能否 访问 容器的服务(telnet ip + port)

3. 容器之间 能否 相互访问(同network)

 

测试的环境主要有 : mac, ubuntu, win10 

测试的主要的镜像是 redis:latest 

 

申明 : 一下测试仅针对我这里的特定的环境, 本文只是阐述我这里的环境下面的一些实际情况 

 

 

mac 下面的测试

首先输出一下环境 

master:HDFS jerry$ uname -a
Darwin master.local 18.5.0 Darwin Kernel Version 18.5.0: Mon Mar 11 22:26:31 PDT 2019; root:xnu-4903.251.3~5/RELEASE_X86_64 x86_64
master:HDFS jerry$ docker version
Client: Docker Engine - Community
 Version:           18.09.2
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        6247962
 Built:             Sun Feb 10 04:12:39 2019
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 04:13:06 2019
  OS/Arch:          linux/amd64
  Experimental:     false

 

1. 宿主机能否 ping 容器 

master:HDFS jerry$ docker run -itd --name redis-test -p 6379:6379 redis
886d0e8e3a5fb6be1ef48e93b8f8e3307ac330a035e6ee3efa24e5edf7e95d81
master:HDFS jerry$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
886d0e8e3a5f        redis               "docker-entrypoint.s…"   2 seconds ago       Up 1 second         0.0.0.0:6379->6379/tcp   redis-test
master:HDFS jerry$ ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
^C
--- 172.17.0.2 ping statistics ---
4 packets transmitted, 0 packets received, 100.0% packet loss
master:HDFS jerry$ ping 172.17.0.1
PING 172.17.0.1 (172.17.0.1): 56 data bytes
64 bytes from 172.17.0.1: icmp_seq=0 ttl=249 time=3.838 ms
64 bytes from 172.17.0.1: icmp_seq=1 ttl=249 time=3.722 ms
64 bytes from 172.17.0.1: icmp_seq=2 ttl=249 time=3.927 ms
^C
--- 172.17.0.1 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 3.722/3.8

可以发现 这里不能 宿主机 ping 不了 docker 容器, 但是 能够 ping 通网关 

 

2. 宿主机能否 访问 容器的服务(telnet ip + port)

既然 docker 容器都ping不通, 这里更加就访问不了

 

3. 容器之间 能否 相互访问(同network)

master:HDFS jerry$ docker run -itd --name redis-test-02 -p 6389:6379 redis
d47ffc9230c9193af215c424efc16fbb55824306ea1336125f6503bae2aee997
master:HDFS jerry$ docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
d47ffc9230c9        redis               "docker-entrypoint.s…"   8 seconds ago       Up 6 seconds        0.0.0.0:6389->6379/tcp   redis-test-02
886d0e8e3a5f        redis               "docker-entrypoint.s…"   3 minutes ago       Up 3 minutes        0.0.0.0:6379->6379/tcp   redis-test
master:HDFS jerry$ docker inspect redis-test-2 | grep IPAddr
Error: No such object: redis-test-2
master:HDFS jerry$ docker inspect redis-test-02 | grep IPAddr
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.3",
                    "IPAddress": "172.17.0.3",
master:HDFS jerry$ ping 172.17.0.3
PING 172.17.0.3 (172.17.0.3): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
^C
--- 172.17.0.3 ping statistics ---
4 packets transmitted, 0 packets received, 100.0% packet loss
master:HDFS jerry$ docker exec -it redis-test-02 /bin/sh
# cd /usr/local/bin
# redis-cli -h 172.17.0.2 -p 6379
172.17.0.2:6379> 

可以发现 容器之间是可以互相 访问的 

 

 

但是 在我之前搭建一个环境的时候, 似乎是和这个 又有相悖的地方, 我使用 docker-compose 启动了一个容器 

在这里面 宿主机 是能够 ping通 docker 容器的, 哎 真的是有点懵了, 呵呵 这里也 展示一下 这个情况 

一个宿主机 可以 ping通 docker 容器的示例 

master:HDFS jerry$ docker-compose up -d
Starting hdfs_namenode_1 ... done
master:HDFS jerry$ docker ps 
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                                                                                                                                                                                                                                                                NAMES
3dfc4154ff67        singularities/hadoop   "start-hadoop nameno…"   43 minutes ago      Up 5 seconds        0.0.0.0:8020->8020/tcp, 0.0.0.0:10020->10020/tcp, 0.0.0.0:13562->13562/tcp, 0.0.0.0:14000->14000/tcp, 0.0.0.0:19888->19888/tcp, 9000/tcp, 0.0.0.0:50010->50010/tcp, 0.0.0.0:50070->50070/tcp, 50020/tcp, 50090/tcp, 50470/tcp, 0.0.0.0:50075->50075/tcp, 50475/tcp   hdfs_namenode_1
master:HDFS jerry$ docker inspect hdfs_namenode_1 | grep IPAddr
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.23.0.2",
master:HDFS jerry$ ping 172.23.0.2
PING 172.23.0.2 (172.23.0.2): 56 data bytes
64 bytes from 172.23.0.2: icmp_seq=0 ttl=57 time=59.556 ms
64 bytes from 172.23.0.2: icmp_seq=1 ttl=57 time=49.499 ms
64 bytes from 172.23.0.2: icmp_seq=2 ttl=57 time=54.752 ms
^C
--- 172.23.0.2 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 49.499/54.602/59.556/4.107 ms
master:HDFS jerry$ telnet 172.23.0.2 8200
Trying 172.23.0.2...
telnet: connect to address 172.23.0.2: Connection refused
telnet: Unable to connect to remote host
master:HDFS jerry$ docker exec -it hdfs_namenode_1 /bin/sh 
# ping 172.23.0.2
PING 172.23.0.2 (172.23.0.2): 56 data bytes
64 bytes from 172.23.0.2: icmp_seq=0 ttl=64 time=0.054 ms
64 bytes from 172.23.0.2: icmp_seq=1 ttl=64 time=0.094 ms
64 bytes from 172.23.0.2: icmp_seq=2 ttl=64 time=0.112 ms
^C--- 172.23.0.2 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.054/0.087/0.112/0.024 ms
# wget 172.23.0.2:8020
--2020-04-18 03:25:35--  http://172.23.0.2:8020/
Connecting to 172.23.0.2:8020... connected.
HTTP request sent, awaiting response... 404 Not Found
2020-04-18 03:25:35 ERROR 404: Not Found.

从上面的 输出可以看到, 宿主机是可以 ping通 docker 容器, 但是 不能 访问给定的 容器的端口 

然后 我本地机器上面 是关闭了防火墙, 并且 docker 容器里面也是没有启用防火墙的 

 

然后 我以为是 docker -run 和 docker-compose 的区别? 

然后 我使用 docker-compose 启动了一下容器 试试, 结果 还是不行 

master:TestCompose jerry$ ls
docker-compose.yml
master:TestCompose jerry$ cat docker-compose.yml 
version: "2"

services:
  redis:
    container_name: redis-compose
    image: redis
    hostname: redis-compose
    environment:
      test: test
    ports:
      - "6379:6379"
master:TestCompose jerry$ docker-compose up -d
Creating redis-compose ... done
master:TestCompose jerry$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
8f10aeebabff        redis               "docker-entrypoint.s…"   6 seconds ago       Up 5 seconds        0.0.0.0:6379->6379/tcp   redis-compose
master:TestCompose jerry$ docker inspect redis-compose | grep IPAddr
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.21.0.2",
master:TestCompose jerry$ ping 172.21.0.2
PING 172.21.0.2 (172.21.0.2): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
^C
--- 172.21.0.2 ping statistics ---
4 packets transmitted, 0 packets received, 100.0% packet loss
master:TestCompose jerry$ 

 

另外我还做了一个尝试就是, 吧 redis-test 添加到 HDFS 这个网络里面去, 呵呵 这下能够 ping通 了, 但是 telnet 和上面的效果一样 

master:HDFS jerry$ docker run -itd --name redis-test -p 6379:6379 --net hdfs_default redis
986268228ab81c3604be82e37532419a969c69d6a3645f9dca3e3932cb0f0561
master:HDFS jerry$ docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
986268228ab8        redis               "docker-entrypoint.s…"   4 seconds ago       Up 3 seconds        0.0.0.0:6379->6379/tcp   redis-test
master:HDFS jerry$ docker inspect redis-test | grep IPAddr
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.23.0.2",
master:HDFS jerry$ ping 172.23.0.2
PING 172.23.0.2 (172.23.0.2): 56 data bytes
64 bytes from 172.23.0.2: icmp_seq=0 ttl=57 time=3.499 ms
64 bytes from 172.23.0.2: icmp_seq=1 ttl=57 time=3.850 ms
64 bytes from 172.23.0.2: icmp_seq=2 ttl=57 time=4.507 ms
^C
--- 172.23.0.2 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 3.499/3.952/4.507/0.418 ms
master:HDFS jerry$ telnet 172.23.0.2 6379
Trying 172.23.0.2...
telnet: connect to address 172.23.0.2: Connection refused
telnet: Unable to connect to remote host
master:HDFS jerry$ 

 

呵呵 以上这三四组测试, 可能是和具体的网络有什么关系吧

呵呵 这里就不求甚解了, 希望有有缘人能帮忙解释一下吧, 又或者是 自己以后来填坑 

这里贴上 具体的 network 的相关信息  

master:TestCompose jerry$ docker network ls
NETWORK ID          NAME                  DRIVER              SCOPE
fa88fd953f54        bridge                bridge              local
b0ec1a95c8ea        hdfs_default          bridge              local
0f33f24768cf        host                  host                local
0039761e2765        none                  null                local
886a9d9a4c2e        testcompose_default   bridge              local
master:TestCompose jerry$ docker network inspect hdfs_default
[
    {
        "Name": "hdfs_default",
        "Id": "b0ec1a95c8eaeef51fae3d068d575a5cdf565d839bf82af45790849f04b778f4",
        "Created": "2020-04-18T02:40:14.548966067Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.23.0.0/16",
                    "Gateway": "172.23.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]
master:TestCompose jerry$ docker inspect testcompose_default
[
    {
        "Name": "testcompose_default",
        "Id": "886a9d9a4c2e73a6719483472e170919841ee715d2383449e588b94e0033842a",
        "Created": "2020-04-18T02:28:38.086088781Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.21.0.0/16",
                    "Gateway": "172.21.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]
master:TestCompose jerry$ docker inspect bridge
[
    {
        "Name": "bridge",
        "Id": "fa88fd953f545bebf9c166c15ec2a93adbb96683167ad98ba2ce3dfdb2f35b25",
        "Created": "2020-04-18T01:28:20.331110918Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.dockerwork.bridge.default_bridge": "true",
            "com.dockerwork.bridge.enable_icc": "true",
            "com.dockerwork.bridge.enable_ip_masquerade": "true",
            "com.dockerwork.bridge.host_binding_ipv4": "0.0.0.0",
            "com.dockerwork.bridge.name": "docker0",
            "com.dockerwork.driver.mtu": "1500"
        },
        "Labels": {}
    }
]
master:TestCompose jerry$ 

 

 

ubuntu 下面的测试

首先输出一下环境 

root@server:~# uname -a
Linux server 4.4.0-138-generic #164-Ubuntu SMP Tue Oct 2 17:16:02 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
root@server:~# docker version
Client:
 Version:           18.09.7
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        2d0083d
 Built:             Fri Aug 16 14:19:38 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.09.7
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       2d0083d
  Built:            Thu Aug 15 15:12:41 2019
  OS/Arch:          linux/amd64
  Experimental:     false
root@server:~# 

 

1. 宿主机能否 ping 容器 

2. 宿主机能否 访问 容器的服务(telnet ip + port)

root@server:~# docker run -itd --name redis-test -p 6379:6379 redis
b94d7df4470c35a2235a7d02b734b4e12934a92755ab753a5cfc7ca382036508
root@server:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
b94d7df4470c        redis               "docker-entrypoint.s…"   5 seconds ago       Up 3 seconds        0.0.0.0:6379->6379/tcp   redis-test
root@server:~# docker inspect redis-test | grep IPAddr
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",
root@server:~# ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.055 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.055 ms
64 bytes from 172.17.0.2: icmp_seq=3 ttl=64 time=0.042 ms
64 bytes from 172.17.0.2: icmp_seq=4 ttl=64 time=0.039 ms
ç64 bytes from 172.17.0.2: icmp_seq=5 ttl=64 time=0.045 ms
64 bytes from 172.17.0.2: icmp_seq=6 ttl=64 time=0.048 ms
^C
--- 172.17.0.2 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 4997ms
rtt min/avg/max/mdev = 0.039/0.047/0.055/0.008 ms
root@server:~# telnet 172.17.0.2 6379
Trying 172.17.0.2...
Connected to 172.17.0.2.
Escape character is '^]'.
quit         
+OK
Connection closed by foreign host.
root@server:~# 

可以看到 这里的结果是 宿主机可以和 docker 容器 ping 通, 并且可以 访问他的服务 

 

3. 容器之间 能否 相互访问(同network)

root@server:~# docker run -itd --name redis-test-02 -p 6389:6379 redis
918c55d4e388bebb0336dbc126a359bd7cbd88e4440d910219f9987fcce3f608
root@server:~# docker exec -it redis-test-02 /bin/sh
# cd /usr/local/bin
# redis-cli -h 172.17.0.2 -p 6379
172.17.0.2:6379> 

容器之间 可以相互访问 

 

 

win10 下面的测试

首先测试一下在 windows 容器里面跑的情况 

1. 宿主机能否 ping 容器 

2. 宿主机能否 访问 容器的服务(telnet ip + port)

C:\Users\Administrator>docker run -itd --name redis-test -p 6379:6379 redis
18606377d8b75b032a813c8b7a7340c4fb2a5116188b8e3d1ee200a3ea8a0f45

C:\Users\Administrator>docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
18606377d8b7        redis               "docker-entrypoint.s…"   3 seconds ago       Up 2 seconds        0.0.0.0:6379->6379/tcp   redis-test

C:\Users\Administrator>docker inspect docker-test | findstr "IPAddr"
Error: No such object: docker-test

C:\Users\Administrator>docker inspect redis-test | findstr "IPAddr"
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.23.114.78",

C:\Users\Administrator>ping 172.23.114.78

正在 Ping 172.23.114.78 具有 32 字节的数据:
来自 172.23.114.78 的回复: 字节=32 时间<1ms TTL=64
来自 172.23.114.78 的回复: 字节=32 时间<1ms TTL=64
来自 172.23.114.78 的回复: 字节=32 时间<1ms TTL=64

172.23.114.78 的 Ping 统计信息:
    数据包: 已发送 = 3,已接收 = 3,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms
Control-C
^C
C:\Users\Administrator>
C:\Users\Administrator>telnet 172.23.114.78 6379
+OK                                                                                                                    +OK

遗失对主机的连接。

可以看到 在 windows 容器中, 既能 ping通 docker 容器, 也能 访问容器的服务 

 

3. 容器之间 能否 相互访问(同network)

C:\Users\Administrator>docker run -itd --name redis-test-02 -p 6389:6379 redis
0ead5a81512b24ade00e785d46428007ab13e50caec2f9b6a363e431dce2544c

C:\Users\Administrator>docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
0ead5a81512b        redis               "docker-entrypoint.s…"   5 seconds ago       Up 3 seconds        0.0.0.0:6389->6379/tcp   redis-test-02
f547a878498f        redis               "docker-entrypoint.s…"   20 seconds ago      Up 19 seconds       0.0.0.0:6379->6379/tcp   redis-test

C:\Users\Administrator>docker exec -it redis-test-02 /bin/sh
# cd /usr/local/bin
# ls
docker-entrypoint.sh  gosu  redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server
# redis-cli -h 172.23.120.168 -p 6379
172.23.120.168:6379>

容器之间 可以相互访问 

windows 容器 下面跑应用 似乎是还有一些问题啊, 比如一个 docker stop redis-test 就卡在那里了 

 

 

那么我们切换到 linux 容器  

1. 宿主机能否 ping 容器 

2. 宿主机能否 访问 容器的服务(telnet ip + port)

C:\Users\Administrator>docker run -itd --name redis-test -p 6379:6379 redis
f8806318c8a760011d0d672cdb955c08ab4e5b870b761a0182001315eed8f72d

C:\Users\Administrator>docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
f8806318c8a7        redis               "docker-entrypoint.s…"   2 seconds ago       Up 1 second         0.0.0.0:6379->6379/tcp   redis-test

C:\Users\Administrator>docker inspect redis-test | findstr "IPAddr"
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",

C:\Users\Administrator>ping 172.17.0.2

正在 Ping 172.17.0.2 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。

172.17.0.2 的 Ping 统计信息:
    数据包: 已发送 = 3,已接收 = 0,丢失 = 3 (100% 丢失),
Control-C
^C
C:\Users\Administrator>ping 172.17.0.1

正在 Ping 172.17.0.1 具有 32 字节的数据:
来自 172.17.0.1 的回复: 字节=32 时间=6ms TTL=248
来自 172.17.0.1 的回复: 字节=32 时间=17ms TTL=248
来自 172.17.0.1 的回复: 字节=32 时间=6ms TTL=248

172.17.0.1 的 Ping 统计信息:
    数据包: 已发送 = 3,已接收 = 3,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 6ms,最长 = 17ms,平均 = 9ms
Control-C
^C
C:\Users\Administrator>

 

一些对于这个问题的尝试的思路, 但是 最终都还是不行 

docker for windows 容器内网通过独立IP直接访问的方法
windows宿主机访问docker容器ip无法ping通 
route -p add 10.0.75.0/28 MASK 255.255.255.240 172.17.0.225
处理之后 能够 ping 通网关, 不能 ping 通 docker 容器 
在Windows宿主机中连接虚拟机中的Docker容器总结

 

3. 容器之间 能否 相互访问(同network)

C:\Users\Administrator>docker run -itd --name redis-test-02 -p 6389:6379 redis
13ad6cbc6106006ac3def40f7dd4b397d7124b1539796d65a9632a047036662c

C:\Users\Administrator>docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
13ad6cbc6106        redis               "docker-entrypoint.s…"   11 seconds ago      Up 10 seconds       0.0.0.0:6389->6379/tcp   redis-test-02
f8806318c8a7        redis               "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes        0.0.0.0:6379->6379/tcp   redis-test

C:\Users\Administrator>docker exec -it redis-test-02 /bin/sh
# cd /usr/local/bin
# redis-cli -h 172.17.0.2 -p 6379
172.17.0.2:6379>

容器之间 可以相互访问 

 

docker for windows 遇到的一些问题解决方式 

no matching manifest for windows/amd64 10.0.18362 in the manifest list entries
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
failed to create endpoint apia2 on network nat: hnsCall failed in Win32: The process cannot access the file because it is being used by another process. (0x20)

 

这一点可以在 官方文档中找到解释 

Networking features in Docker Desktop for Windows
Docker Desktop for Windows can’t route traffic to Linux containers. However, you can ping the Windows containers.

 

 

额外的收货

呵呵 今天发现了一件事情, 我买了一个 接网线的 type-c adaptor, mac 有四个接口, 我平常用的是右上, 右下 

接网线 + adaptor 两个接口都能够访问网络, 但是只有接 右下 的结构才能进行 Internet Sharing(可以开wifi热点) 

 

开 docker for windows 启用了 Hyper-V, 然后尝试 启用 vmware 的时候 VMware Workstation与Device/Credential Guard软件后出现不兼容 

然后 找了一篇教程 关闭了一下 Hyper-V, PowerShell 也需要执行脚本 "bcdedit /set hypervisorlaunchtype off"

然后 vmware 就又能使用了, 呵呵 要是 vm 需要重装, 那就玩大了 

 

另外 进入vm之后, 发现 xshell 登录不上 vm 了, 呵呵 vm 上不了网, 和宿主机 互ping 不行 

安装docker后,vmware连接不了网络 我这里的情况是 禁用了 这里的两个 Ethernet 就好了 

 

 

完 

 

 

参考

docker run

docker-compose up

docker network

no matching manifest for windows/amd64 10.0.18362 in the manifest list entries
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
failed to create endpoint apia2 on network nat: hnsCall failed in Win32: The process cannot access the file because it is being used by another process. (0x20)

Networking features in Docker Desktop for Windows

安装docker后,vmware连接不了网络

 

 

本文标签: 容器操作系统测试网络Docker