0%

卷和持久化数据

数据分为持久化和非持久化两类。对于容器,非持久化数据从属其容器,生命周期与容器相同,删除容器时也会删除所有非持久化数据。如果希望自己的容器数据保存下来,需要将数据存储在卷上,卷与容器是解耦的,可以独立地创建并管理。

在主机上创建Docker的卷,实质上是创建一个目录,使之能且只能被Docker进程修改,除了‘卷’,可使用绑定装载的方式在主机和容器间共享文件

卷命令

1
2
3
4
5
docker volume create myvol
docker volume ls // 查看已创建地卷
docker volume inspect myvol // 查看指定卷详细信息
docker volume rm myvol // 删除指定卷
docker volume prune // 删除所有未装入容器使用的卷

装入容器

-v, —volume

1
docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home --restart always jenkins

用:分隔的3个field,卷名称 : 路径或文件 : 选项,通常只保留卷路径

ro 即 readonly

原文:

In the case of named volumes, the first field is the name of the volume, and is unique on a given host machine. For anonymous volumes, the first field is omitted.

The second field is the path where the file or directory will be mounted in the container.

The third field is optional, and is a comma-separated list of options, such as ro.

上例中,-v /var/jenkins_home:/var/jenkins_home 两个field前者是宿主路径,后者是容器路径,即将jenkins用户数据保存到容器的/var/jenkins_home同时持久化到本地位于/var/jenkins_home的卷中

引述 jenkins官网

-v $HOME/jenkins:/var/jenkins_home would map the container’s /var/jenkins_home directory to the jenkins subdirectory within the $HOME directory on your local machine, which would typically be /Users//jenkins or /home//jenkins.

—mount

1
2
docker run --name myjenkins -p 8080:8080 -p 50000:50000 \ 
--mount source=jenkins_home,target=/var/jenkins_home,driver=local --restart always jenkins

用 , 分隔三个字段,卷名称,目标路径或文件,驱动。