1. 查看容器ID,这个我们在第 5 步时需要根据容器ID确定配置文件位置
docker ps -a
2. 登陆 docker 内部 linux 系统
cd ~/Library/Containers/com.docker.docker/Data/vms/0/
切换到 tty 用户
screen tty
3. 找到容器配置文件
cd /var/lib/docker/containers/
MAC OS中,docker有两层虚拟机,一层是docker本身的虚拟层(linux),然后是docker里容器的虚拟层,所以网上很多文章提到的 /var/lib/docker/containers 文件夹在MAC系统中是找不到的。这里我们通过 tty 用户就能进入 /var/lib/docker/containers 了。
目录下保存的就是我们的容器配置文件列表
cd 到我们要修改的容器下
cd 82f2978d521e1a60629f1589fdcbecc03a24f527ff984e255e10948297bd7dc1
4. config.v2.json 和 hostconfig.json 就是我们要修改配置文件
接下来我们在容器内挂载宿主机目录
设置容器对外共享目录
vi config.v2.json
在 MountPoints 里面添加以下内容,对应的目录换成你自己电脑实际路径
"/www": {
"Source": "/Users/niejunyong/www",
"Destination": "/www",
"RW": true,
"Name": "",
"Driver": "",
"Type": "bind",
"Propagation": "rprivate",
"Spec": {
"Type": "bind",
"Source": "/Users/niejunyong/www",
"Target": "/www"
},
"SkipMountpointCreation": false
}
}
绑定容器内目录
vi hostconfig.json
在 Binds 里面添加配置
["/Users/niejunyong/www:/www"]
冒号前面是宿主机目录,冒号后面是容器目录
设置端口映射
设置对外暴露端口
vi config.v2.json
在 Config 里面添加需要暴露的端口
"ExposedPorts":{"8888/tcp":{}},
有的朋友说,vi 时候就一行,往后一点一点找太难了,其实 vi 是支持快速超找的,输入 / 加上需要搜索的内容 回车就可以,如:
/"Config"
在 Ports 里面添加需要暴露的 IP
,"8888/tcp":[{"HostIp":"127.0.0.1","HostPort":"8888"}]
绑定容器端口
vi hostconfig.json
在 PortBindings 里面添加需要容器绑定的端口
"8888/tcp":[{"HostIp":"127.0.0.1","HostPort":"8888"}]
5. 重启 docker 服务,注意是重启 docker 服务,不是重启容器,否则刚刚修改的内容会被覆盖
6. 菜单栏上面的小鲸鱼会开始动,等它停止后,就是重启完毕了,查看仪表盘
仪表盘,终端都可以看到,主机目录/映射端口已经设置成功