Docker数据管理

数据卷是一个可提供一个或多个容器使用的特殊目录,其绕过UFS,可以提供很多有用的特性:

  • 数据卷 可以在容器之间共享和重用
  • 对 数据卷 的修改会立刻生效
  • 对 数据卷 的更新不影响镜像
  • 数据卷 默认会一直存在,即使容器被删除

数据卷的使用,类似于Linux下对目录或文件进行mount,镜像中的被指定为挂载点的目录文件会复制到数据卷中

基础操作

docker volume create my-vol

查看所有的数据卷

docker volume ls

在主机中查看只能怪数据卷的信息

docker volume inspect my-vol

启动数据卷,加载数据

docker run -d -P \ 
	--name web \
	# -v my-vol:/usr/share/nginx/html
	--mount source =my-vol,target=/usr/share/nginx/html \
	mginx:alpine

删除数据卷

docker volume rm my-vol

数据卷是被设计用来持久化数据的,其生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用docker rm -v

无用的数据卷可能会占用很多空间,要清理请可以使用以下命令

docker volume prune

挂载主机目录

挂载一个主机目录作为数据卷

使用 --mount标记可以指定挂载一个主机本地的目录到容器中去。

docker run -d -P
	-- name web \
	# -v /src/webapp:/usr/share/nginx/html \
	--mount type=bind,source=/src/webapp,target=/usr/share/nginx/html \
	#,readonly\
	nginx:alpine
  • 上面指定/src/webapp目录到容器的 /usr/share/nginx/html 目录
  • -v参数是如果本地目录不存在Dockers会帮你创建一个文件夹,--mount时本地目录不存在时,Docker也会报错
  • 添加readonly后,就变为了只读属性

查看数据卷的具体信息

产看web容器的信息docker inspect web,会列出挂载目录的配置信息。在Mounts key下

"Mounts": [
    {
            "Type": "bind",
            "Source": "/src/webapp",
            "Destination": "/usr/share/nginx/html",
            "Mode": "",
            "RW": true,
            "Propagation": "rprivate"
    }
],

挂载一个本地主机文件作为数据卷

--mount 标记也可以从主机挂载单个文件到容器中

docker run --rm -it \
    # -v $HOME/.bash_history:/root/.bash_history \
    --mount type=bind,source=$HOME/.bash_history,target=/root/.bash_history \
    ubuntu:18.04 \
    bash

如此可以记录输入的命令

posted @ 2021-02-18 14:21  NGinko  阅读(62)  评论(0编辑  收藏  举报