Docker使用5-Use bind mounts

写在前面

主题是Use bind mounts,这里是链接。本文主要学习持久化数据的另一种方式。

使用mount持久化数据

前文使用Volume持久化数据,这里使用另一种方式Mount持久化数据,就是把主机中的路径映射到容器内的路径。下图是两种方式的主要区别。

volume mount
数据在主机存放的位置 Docker选择 自己选择
使用例子 type=volume,src=my-volume,target=/usr/local/data type=bind,src=/path/to/data,target=/usr/local/data
用容器内存填充新的卷 支持 不支持
支持卷驱动程序 支持 不支持

尝试使用mount

  1. 确保当前终端路径处于之前的getting-started-app路径
  2. 运行下面代码,type为bindsrc=”$(pwd)“把当前文件目录作为源目录,target=/src是映射到容器内的文件目录。-it是进入实时交互。结果如下所示。
    docker run -it --mount type=bind,src="$(pwd)",target=/src ubuntu bash
    
    root@ac1237fad8db:/# pwd
    /
    root@ac1237fad8db:/# ls
    bin   dev  home  media  opt   root  sbin  srv  tmp  var
    boot  etc  lib   mnt    proc  run   src   sys  usr
    
  3. 进入src目录并创建myfile.txt
    root@ac1237fad8db:/# cd src
    root@ac1237fad8db:/src# ls
    Dockerfile  node_modules  package.json  spec  src  yarn.lock
    
    root@ac1237fad8db:/src# touch myfile.txt
    root@ac1237fad8db:/src# ls
    Dockerfile  myfile.txt  node_modules  package.json  spec  src  yarn.lock
    
  4. 打开一个新终端并进入getting-started-app目录,会发现myfile.txt在出现这个目录。
    ├── getting-started-app/
    │ ├── Dockerfile
    │ ├── myfile.txt
    │ ├── node_modules/
    │ ├── package.json
    │ ├── spec/
    │ ├── src/
    │ └── yarn.lock
    
  5. 使用Ctrl + D停止容器运行

你可能感兴趣的:(docker,容器,运维)