挂载主机目录
挂载一个主机目录作为数据卷:
docker run -d -P \
--name web \
# -v /src/webapp:/opt/webapp \
--mount type=bind,source=/src/webapp,target=/opt/webapp \
training/webapp \
python app.py
上面的命令挂载宿主机的 /src/webapp
目录到容器的 /opt/webapp
目录,这样一来就可以将本地的 Web 根目录地址挂载到容器中。默认挂载目录具备读写权限,你可以通过 readonly
设置只读权限:
--mount type=bind,source=/src/webapp,target=/opt/webapp,readonly
你可以通过 docker inspect web
查看数据卷的具体信息指令。
还可以挂载一个本地主机文件作为数据卷:
docker run --rm -it \
# -v $HOME/.bash_history:/root/.bash_history \
--mount type=bind,source=$HOME/.bash_history,target=/root/.bash_history \
ubuntu:17.10 \
bash
这样一来,就可以记录在容器中输入的命令了。
使用数据卷(volume)和挂载目录(bind mount)的区别如下:
- 数据卷由 Docker 创建和管理,和宿主机核心隔离,安全性更好,可以被挂载到多个容器,数据会被存储到宿主机的某个位置,或者存储到其他机器以及云上;
- 挂载目录的方式是 Docker 早期提供的特性,功能有限,需要显式将宿主机目录挂载到容器,这样一来,容器可以直接修改宿主机文件,存在安全隐患。
所以更推荐直接使用数据卷(Volume)的方式。
No Comments