挂载主机目录


挂载一个主机目录作为数据卷:

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)的方式。


点赞 取消点赞 收藏 取消收藏

<< 上一篇: 数据卷

>> 下一篇: 外部访问容器