Docker从入门到精通(九)

2023-09-02 15:44:09 浏览数 (1)

Mac和Linux安装docker的实现方式是有区别的.linux中docker服务是在宿主机上的一个进程,而我们的Mac是让docker服务运行在一个虚拟机上的.

具体的差别就是,Linux默认容器和宿主机是相通的,之所以相通是因为Linux宿主机上会一个docker0的网卡,而mac上没有docker0这个网卡,导致docker容器与他的宿主机是不通的.

解决mac如何ping我们的宿主机

第一步:首先Mac端通过brew安装docker-connector

代码语言:javascript复制
brew install wenjunxiao/brew/docker-connector

第二步:执行下面命令将docker所有 bridge 网络都添加到docker-connector路由

代码语言:javascript复制
docker network ls --filter driver=bridge --format "{{.ID}}" | xargs docker network inspect --format "route {{range .IPAM.Config}}{{.Subnet}}{{end}}" >> /usr/local/etc/docker-connector.conf
代码语言:javascript复制
代码语言:javascript复制
第三步:使用sudo启动docker-connector服务
代码语言:javascript复制
代码语言:javascript复制
sudo brew services start docker-connector
代码语言:javascript复制
代码语言:javascript复制
第四步:使用下面命令创建wenjunxiao/mac-docker-connector容器,要求使用host网络并且允许NET_ADMIN
代码语言:javascript复制

代码语言:javascript复制
docker run -it -d --restart always --net host --cap-add NET_ADMIN --name connector wenjunxiao/mac-docker-connector
代码语言:javascript复制
代码语言:javascript复制
第五步:docker-connector容器启动成功后,macOS宿主机即可访问其它容器网络(如果不
代码语言:javascript复制
行,重启电脑即可)
代码语言:javascript复制
代码语言:javascript复制
$ docker ps
CONTAINER ID   IMAGE                             COMMAND                  CREATED          STATUS          PORTS                               NAMES
681d33c80334   wenjunxiao/mac-docker-connector   "mac-receiver"           30 minutes ago   Up 27 minutes                                       connector
9a5f2f8b2e91   mysql:5.6                         "docker-entrypoint.s…"   4 weeks ago      Up 22 minutes   0.0.0.0:3307->3306/tcp              mysql2
ed9709c6210c   mysql                             "docker-entrypoint.s…"   4 weeks ago      Up 26 minutes   0.0.0.0:3306->3306/tcp, 33060/tcp   mysql-test
$ docker inspect 9a5f2f8b2e91 | tail -n 20
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "fab85b3e7b972d7706d67283cc0e816a332d507058f4ff1cb124bdc231595f71",
                    "EndpointID": "5c3837090785ad8e02add5d9edd8825ea62ea6dd50da883d0b04c2b09d7d9eb5",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:03",
                    "DriverOpts": null
                }
            }
        }
    }
]
$ ping 172.17.0.3
PING 172.17.0.3 (172.17.0.3): 56 data bytes
64 bytes from 172.17.0.3: icmp_seq=0 ttl=63 time=1.370 ms
64 bytes from 172.17.0.3: icmp_seq=1 ttl=63 time=1.720 ms
64 bytes from 172.17.0.3: icmp_seq=2 ttl=63 time=1.446 ms

0 人点赞