Docker Desktop for Mac 修改端口

因为在 Docker for MacOS 中,容器的宿主机并不是 MacOS 本身,而是在 MacOS 中运行的一个 VM 虚拟机。虚拟机的路径可以通过查看 Docker Desktop 的配置界面Disk image location配置获得。

那么我们如何进入这个虚拟机呢并设置容器呢?

可以采用 justincormack/nsenter1 进入,这个镜像只有 101KB,已经非常小了。

docker run -it --rm --privileged --pid=host justincormack/nsenter1

  • –rm 表示在退出的时候就自动删除该容器;
  • –privileged 表示允许该容器访问宿主机(也就是我们想要登录的 VM )中的各种设备;
  • –pid=host 表示允许容器共享宿主机的进程命名空间(namespace),或者通俗点儿解释就是允许容器看到宿主机中的各种进程;

先停止容器,

在终端运行以上命令之后自动进入容器

然后 cd /var/lib/docker/containers/ 可以看到安装的所有容器,找到要修改端口的容器id,cd 进入,可以看到 hostconfig.json 和 config.v2.json 文件

由于justincormack/nsenter1容器未安装 vim,只能使用 vi 打开 hostconfig.json 和 config.v2.json 文件,并修改对应的端口

修改hostconfig.json配置文件

hostconfig.json配置文件中,找到"PortBindings":{}这个配置项,然后进行修改。我这里添加了两个端口映射,分别将宿主机的端口 9501,9510 端口映射到容器的9501,9510端口。

HostPort对应的端口代表宿主机的端口,实际端口按需修改,如下:

{"PortBindings":{"9501/tcp":[{ "HostIp":"","HostPort":"9501"}],"9510/tcp":[{"HostIp":"","HostPort":"9510"}]}}

修改config.v2.json配置文件

修改"ExposedPorts": {}相关之处,需要和 HostPort 中端口对应,如下:

{"Args":[],"Config":{"ExposedPorts":{"9501/tcp":{},"9510/tcp":{}},"Entrypoint":["/bin/sh"]}}

修改好之后 :wq 保存退出,再重启 docker desktop 服务之后,可以看到端口已经修改完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值