Mac下使用 Docker 挂载宿主机目录/映射端口

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. 菜单栏上面的小鲸鱼会开始动,等它停止后,就是重启完毕了,查看仪表盘

仪表盘,终端都可以看到,主机目录/映射端口已经设置成功

94
0
4月前