注意:Docker Machine里只有/var/lib/docker目录是持久的,其他目录的改动,都会在重启时抹除。
Docker 挂载的目录在虚拟机中而不在 MacOS 里,但虚拟机中没有docker-compose
命令,有两种方法解决这个问题
方法 1. Docker Machine 里安装 docker-compose
# 列出d虚拟机
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.100:2376 v18.09.0
# 查看虚拟机IP
$ docker-machine ip
192.168.99.100
# 连入虚拟机
$ docker-machine ssh default
$ sudo su
# 执行docker-compose命令
$ docker-compose
docker-compose: command not found
# 如果找不到命令,下载安装
$ sudo curl -L https://github.com/docker/compose/releases/download/1.20.1/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose -v
docker-compose version 1.20.1, build 5d8c71b
方法 2. 将虚拟机里的目录挂载到 macos 里,使用 MacOS 里的docker-compose
# 虚拟机创建映射目录
$ docker-machine ssh default mkdir /docker/bank
# 本机创建目录
$ mkdir -p /docker/bank
# 挂载虚拟机目录到本机,本机只有只读权限,修改文件需要进入虚拟机
$ docker-machine mount default:/docker/bank /docker/bank
# 如果报sshfs错误,需要先安装文件系统集成工具
# https://osxfuse.github.io/
# osxfuse-3.8.2.dmg、sshfs-2.5.0.pkg
# 如果需要取消挂载,命令为
$ docker-machine mount -u default:/docker/bank bank
# 进入虚拟机,创建需要的文件
$ docker-machine ssh default
$ cd /docker/bank
$ vi docker-compose.yml
$ mkdir bank-api
$ vi bank-api/config.json
# 退回本机,组合启动
$ cd /docker/bank
$ docker-compose up -d
# 由于映射关系,命令会在虚拟机中的相同目录中执行