Docker -v monta el directorio host en el contenedor (y el contenedor de volumen de datos)

1. Montaje sencillo

  • En el proceso de uso Docker, a menudo es necesario montar directorios o archivos en el host en Dockerel contenedor para lograr la persistencia o el intercambio de datos. El comando es un comando común docker run -vque se usa para montar el directorio del host en el contenedor.Docker

  • Al crear el contenedor de arranque, use -vel 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, -vsimplemente escriba múltiples volúmenes

2. Caja de montaje simple

  • centosmontar 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 deniedque 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.

    imagen.png

    1. Cree un c3contenedor de volumen de datos de inicio y utilícelo -vpara 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 c2contenedor de inicio y utilícelo --volumes-frompara 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 c2agregue, elimine y modifique archivos normalmente en el contenedor para lograr la intercomunicación.Al mismo tiempo, también puede acceder c3al contenedor de volumen de datos por separado para su procesamiento.

Supongo que te gusta

Origin blog.csdn.net/zz00008888/article/details/131924286
Recomendado
Clasificación