1. Montaje sencillo
-
En el proceso de uso
Docker
, a menudo es necesario montar directorios o archivos en el host enDocker
el contenedor para lograr la persistencia o el intercambio de datos. El comando es un comando comúndocker run -v
que se usa para montar el directorio del host en el contenedor.Docker
-
Al crear el contenedor de arranque, use
-v
el parámetro para establecer el volumen de datos# 挂载单个 $ docker run ... -v [主机目录]:[容器目录] [镜像名称] # 挂载多个 $ docker run -v [主机目录1]:[容器目录1] -v [主机目录2]:[容器目录2] -v [主机目录3]:[容器目录3] [镜像名称]
Precauciones:
-
el directorio debe ser una ruta absoluta
-
Si el directorio no existe, se creará automáticamente
-
Puede montar múltiples volúmenes de datos,
-v
simplemente escriba múltiples volúmenes
-
2. Caja de montaje simple
-
centos
montar por ejemplo# 拉取最新 centos $ docker pull centos # 一般可以放在 root 目录下,这里为了测试,随便写个文件名 dzmtest 作为效果区分 $ docker run -it --name dzm -v /dzmtest/data:/dzmtest/data_container centos /bin/bash
-
Después de ingresar al contenedor, vea el directorio del contenedor
# 或者 $ ls -l $ ls # dzmtest 文件夹就被创建了,里面还有个 data_container 文件夹 bin dev dzmtest etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
-
Para ver el directorio del host, debe volver a la capa más externa del host
# 或者 $ ls -l $ ls # 需要通过 $ cd .. 回到宿主机文件最外层,根目录,会发现创建好了 dzmtest,里面还有个 data 文件夹 Docker bin boot dev dzmtest etc home init lib lib32 lib64 libx32 lost+found media mnt opt proc root run sbin snap srv sys tmp usr var
-
Pruebe la función de sincronización de datos, agregue archivos en el host (
/dzmtest/data
) o contenedor ( ), o modifique el contenido de los archivos que se sincronizarán entre sí./dzmtest/data_container
# 或 $ cd /dzmtest/data_container $ cd /dzmtest/data # 随便创建一个文件 $ touch dzm.txt
Si el error de creación del archivo informa
touch: cannot touch 'dzm.txt': Permission denied
que no hay permiso, simplemente agregue un permiso.Lo mismo es cierto si se informa un error
-bash: cd: data/: Permission denied
, solo agregue la máxima autoridad.# 回到上层文件夹 $ cd .. # 对 data 文件添加权限 # chmod 修改权限指令 # -R 对目前目录下的所有档案与子目录进行相同的权限变更 # 777 是所有用户都拥有最高权限 $ sudo chmod -R 777 ./data/
Luego ejecute el comando de creación de archivo nuevamente y se creará con éxito.
dengzemiao@DESKTOP-D06B2J2:/dzmtest/data$ ls # 宿主机上文件就创建好了,然后去容器内的绑定文件夹内查看下是否存在文件 dzm.txt
[root@037524b9fb04 /]# cd dzmtest/data_container/ [root@037524b9fb04 data_container]# ls # 容器内也存在同样的文件了,这样就实现了共享 dzm.txt
-
Ejemplo para montar varios directorios
# 通过 \ + 回车进行换行输入 $ docker run -it --name dzm \ > -v /dzmtest/data1:/dzmtest/data1 \ > -v /dzmtest/data2:/dzmtest/data2 \ > centos /bin/bash
3. Contenedor de volumen de datos
-
Si los datos son compartidos por varios contenedores, de acuerdo con el método anterior, cada contenedor se asocia con una carpeta de la máquina host, de modo que los datos de varios contenedores se pueden compartir.
Otra forma es
数据卷容器
crear un contenedor para montar la carpeta de host específicamente y luego asociar otros contenedores con este contenedor.1. Cree un
c3
contenedor de volumen de datos de inicio y utilícelo-v
para configurar el volumen de datos# -v /volume 这种写法会在容器内创建一个 /volume 目录,然后 docker 会在宿主机上自动分配一个目录作为绑定目录 $ docker run -it --name=c3 -v /volume centos:7 /bin/bash # 执行命令后,如何查看容器自动分配的宿主机绑定目录呢 $ docker inspect c3 [ { ...... "HostConfig": { // 如果指定数据卷目录,这里会列出绑定信息 "Binds": null, ...... }, ...... // 挂着信息 "Mounts": [ { "Type": "volume", "Name": "8d89f84aa486fcf706e180e6aa17649929147bdbc32e8aa3391b4dffdce27d09", // 宿主机中的目录 "Source": "/var/lib/docker/volumes/8d89f84aa486fcf706e180e6aa17649929147bdbc32e8aa3391b4dffdce27d09/_data", // 容器中的目录 "Destination": "/dzmtest1", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ], ..... } ] dengzemiao@DESKTOP-D06B2
2. Cree un
c1 c2
contenedor de inicio y utilícelo--volumes-from
para configurar el contenedor de volumen de datos$ docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash $ docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash
3. Luego
c1 c2
agregue, elimine y modifique archivos normalmente en el contenedor para lograr la intercomunicación.Al mismo tiempo, también puede accederc3
al contenedor de volumen de datos por separado para su procesamiento.