您的当前位置:首页正文

docker mysql volum_Docker Volume入门用法详解

2024-11-06 来源:个人技术集锦

创建数据卷

docker run --rm --name webserver -p 80:80 -v /var/www:/usr/share/nginx/html:ro -d nginx

前面的/var/www为宿主机上的绝对路径,/usr/share/nginx/html为容器上的绝对路径,ro指定只读挂载。 在本机上创建一个index.html,然后就可以直接通过浏览器访问了,修改index.html文件,刷新浏览器,可以马上看到文件的更新。

docker volume命令有所有关于volume的命令。

docker volume --help

Commands:

create 创建一个数据卷

inspect 打印一个或多个数据卷的详细信息

ls 列出所有数据卷

prune 删除所有未使用的数据卷

rm 删除一个或多个数据卷

如何创建一个数据卷?

docker volume create www-data

列出所有数据卷

docker volume ls

DRIVER VOLUME NAME

local www-data

查看数据卷在宿主机上的路径:

docker inspect www-data

[

{

"Driver": "local",

"Labels": {},

"Mountpoint": "/var/lib/docker/volumes/www-data/_data",

"Name": "www-data",

"Options": {},

"Scope": "local"

}

]

MountPoint 宿主机上的路径为/var/lib/docker/volumes/www-data/_data,数据卷的名称为www-data。

把这个数据卷挂载到一个新的nginx容器中

docker run --rm --name web -p 80:80 -v www-data:/usr/share/nginx/html:ro -d nginx

ls -al /var/lib/docker/volumes/www-data/_data

-rw-r--r-- 1 root root 537 Jul 11 21:06 50x.html

-rw-r--r-- 1 root root 612 Jul 11 21:06 index.html

修改其中的index.html然后刷新浏览器,就可以看到我们刚才的更改。

完成上面一系列的操作之后,在命令行输入docker rm web删除容器,再次查看上面的路径,发现文件还是会保留在那儿,并不会因为容器删除了数据卷也随之删除。可以通过-v选项,在删除的时候也删除关联的数据卷(注意:如果是命名的数据卷,则不会被删除,上面的示例中,即使你在删除容器的时候指定了-v选项,数据卷www-data也不会被删除)。下面简单的讲解一个能通过-v删除的示例:

docker run --name web1 -v /usr/share/nginx/html -d nginx

// 查看数据卷在宿主机上的路径:

docker inspect -f {{.Mounts}} web1

[{volume 853f05868bc1ab4de84a9e646ce022183a2fcbe4e0edce629ff8e0a8f33fdf72 /var/lib/docker/volumes/853f05868bc1ab4de84a9e646ce022183a2fcbe4e0edce629ff8e0a8f33fdf72/_data /usr/share/nginx/html local true }]

// 列出所有不被引用的数据卷

docker volume ls -f dangling=true

DRIVER VOLUME NAME

local www-data

删除所有不被使用的数据卷

docker volume prune

再通过docker volume ls发现所有的数据卷已经被删除了。

// 删除所有的数据卷

docker volume rm $(docker volume ls -q)

// 停止所有的容器

docker stop $(docker ps -a -q)

// 删除所有的容器

docker rm $(docker ps -a -q)

-q选项只打印容器id。

数据容器

数据容器是一类特殊的容器,它并不运行任何程序,只是用来保存数据,可以通过它让不同的容器可以共享数据。

创建一个数据容器:

docker create -v /dbdata --name dbstore busybox

通过--volumes-from来挂载数据容器

docker run -it --volumes-from dbstore ubuntu /bin/bash

备份与还原数据

运维的日常工作中通常少不了数据的备份,还原,迁移等操作。下面介绍如何在数据卷中进行上面的操作:

docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

下面我们来介绍如何把备份数据还原到一个新的容器中: 首先我们启动一个新的容器:

docker run -v /dbdata --name dbstore2 ubuntu /bin/bash

然后把备份数据还原到新的容器中

docker run --rm --volumes-from dbstore2 -v $(pwd):/backup ubuntu bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1"

显示全文