乐趣区

关于后端:Docker文件传输丨如何挂载目录实现容器和宿主机之间的数据共享方便开发和部署

Docker 中挂载目录

在 Docker 中,能够通过挂载目录的形式将宿主机上的目录共享到容器中。这样能够实现容器和宿主机之间的数据共享,不便开发和部署。具体挂载目录的形式如下:

docker run -v / 宿主机目录:/ 容器目录 image_name

其中,/ 宿主机目录 是宿主机上的目录门路,/ 容器目录 是容器中的目录门路,image_name是要启动的镜像名称。

例如,如果要将宿主机上的 /home/user/data 目录挂载到容器中的 /data 目录中,能够应用以下命令:

docker run -v /home/user/data:/data image_name

Docker 文件系统

Docker 应用的是分层的文件系统,每一个镜像都是由多个只读层叠加而成的。当容器启动时,会在镜像的根底上增加一个可写层,容器中的所有批改都会保留在这个可写层中。这样能够保障容器的可移植性和隔离性。

容器与宿主机的文件传输方式

在 Docker 中,容器与宿主机之间的文件传输次要有两种形式:挂载目录和应用 docker cp 命令。

后面曾经介绍了如何通过挂载目录的形式实现容器和宿主机之间的数据共享。这种形式能够实现实时同步,然而须要留神文件权限的问题。

如果须要将容器中的文件复制到宿主机上,能够应用 docker cp 命令。该命令的根本语法如下:

docker cp 容器名称:/ 容器内门路 宿主机门路

例如,如果要将容器中的 /data/file.txt 文件复制到宿主机上的 /home/user 目录下,能够应用以下命令:

docker cp container_name:/data/file.txt /home/user

同样地,如果要将宿主机上的文件复制到容器中,能够应用以下命令:

docker cp 宿主机门路 容器名称:/ 容器内门路

文件权限设置

在 Docker 中,容器与宿主机之间的文件权限须要留神。因为容器中的文件系统是只读的,因而容器中的文件的权限可能会与宿主机上的不同。

为了解决这个问题,能够在启动容器时应用 -u 参数来指定容器中的用户和用户组。例如,以下命令将在容器中创立一个名为 user 的用户,并将其退出到 users 组中:

docker run -u user:users image_name

这样,在容器中创立的文件就会应用指定的用户和用户组,与宿主机上的文件权限保持一致。

另外,还能够通过 -v 参数指定挂载目录时的权限。例如,以下命令将在容器中将挂载的目录的权限设置为read-only

docker run -v /home/user/data:/data:ro image_name

这样,在容器中就无奈批改挂载的目录中的文件了。

本文由 mdnice 多平台公布

退出移动版