首页 > 解决方案 > Docker,将所有用户目录挂载到容器

问题描述

add-v选项可以将目录挂载到容器中,例如挂载/home/me/my_code到容器中,当在容器中时,我们可以看到目录。

目前,在我的 Dockerfile 中,用户是 docker,工作空间是/home/docker,我怎样才能将所有目录挂载/home/me/home/docker?这样当我进入容器时,运行我的任务并浏览/home/me.

标签: dockerdockerfile

解决方案


通过 dockerfile 构建镜像时,COPY 或 ADD 用于在构建镜像示例、安装 npm 二进制文件等过程中复制包含必要内容的文件。

由于您希望具有与容器内部相同的本地 FS 的灵活性,您可以尝试“绑定安装”。

bash-3.2$ docker run \
>       -it \
>       --name devtest \
>       --mount type=bind,source=/Users/anku/,target=/app \
>       nginx:latest \
>       bash
root@c072896c7bb2:/# 
root@c072896c7bb2:/# pwd
/
root@c072896c7bb2:/# cd app
root@c072896c7bb2:/app# ls
 Applications   Documents   Library   Music  Projects   PycharmProjects   anaconda3  'iCloud Drive (Archive)'  'pCloud Drive'   testrun.bash
 Desktop        Downloads   Movies    Pictures   Public    'VirtualBox VMs'   gitlab      minikube-linux-amd64      starup.sh
root@c072896c7bb2:/app# 

有两种机制来管理持久数据。

  1. 完全由 Docker 管理。
  2. Bind Mount,将主机上的文件或目录挂载到容器中。从主机或容器内部所做的任何更改都会同步。

建议通过--volume 和 --mount 行为之间的差异

选择最适合您的。


推荐阅读