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 多平台公布