资讯专栏INFORMATION COLUMN

docker数据卷

cocopeak / 1259人阅读

摘要:创建数据容器常见的使用场景是使用纯数据容器来持久化数据库配置文件或者数据文件等。多次使用标记可以创建多个数据卷。查看该数据卷在主机上的存储目录这种应该是在主机目录底下随机命名的一个目录去挂载,如果是在上,则该目录在上面。

1、创建数据容器

常见的使用场景是使用纯数据容器来持久化数据库、配置文件或者数据文件等。官方的文档上有详细的解释。例如:

$ docker run --name dbdata postgres echo "Data-only container for postgres"

该命令将会创建一个已经包含在Dockerfile里定义过Volume的postgres镜像,运行echo命令然后退出。当我们运行docker ps命令时,echo可以帮助我们识别某镜像的用途。我们可以用-volumes-from命令来识别其它容器的Volume:

$ docker run -d --volumes-from dbdata --name db1 postgres

使用数据容器的两个注意点:

不要运行数据容器,这纯粹是在浪费资源。

不要为了数据容器而使用“最小的镜像”,如busybox或scratch,只使用数据库镜像本身就可以了。你已经拥有该镜像,所以并不需要占用额外的空间。

授权访问数据卷

如果要授权一个容器访问另一个容器的Volume,我们可以使用-volumes-from参数来执行docker run

备份数据卷到物理机器
#sudo docker run --volumes-from dbdata -v $(pwd):/backup--name worker ubuntu tar cvf /backup/backup.tar /dbdata

首先利用ubuntu镜像创建一个容器worker.使用—volumes-from dbdata参数来让容器挂载dbdata容器的数据卷;使用 –v $(pwd):/backup参数来挂载本机的当前目录到worker容器的/backup目录
Woker容器启动后,执行tar命令将/dbdata压缩到/backup/backup.tar,这样就到物理机的当前目录了


2、在容器内创建一个数据卷

在用docker run命令的时候,使用-v标记可以在容器内创建一个数据卷。多次使用-v标记可以创建多个数据卷。
下面使用training/webapp镜像创建一个Web容器,并创建一个数据卷挂载到容器的/we-bapp目录:
$ sudo docker run -d -P --name web -v /webapp training/webapp
注意 -P是允许外部访问容器需要暴露的端口。

查看该数据卷在主机上的存储目录

docker inspect -f {{.Volumes}} your-container-name

这种应该是在主机/var/lib/docker目录底下随机命名的一个目录去挂载,如果是在mac上,则该目录在visualbox上面。

3、挂载本机目录(这个是在dockerfile中VOLUME无法做到的)

使用-v标记也可以指定挂载一个本地的已有目录到容器中去作为数据卷:
$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp
上面的命令加载主机的/src/webapp目录到容器的/opt/webapp目录

挂载本机文件

挂载一个本地主机文件作为数据卷-v标记也可以从主机挂载单个文件到容器中作为数据卷:
$ sudo docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash这样就可以记录在容器输入过的命令历史了。

参考

深入理解Docker Volume(一)

深入理解Docker Volume(二)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26599.html

相关文章

  • Docker学习与和应用(二)_使用Docker

    摘要:在前一篇文章学习与和应用一初步认识中,我们初步介绍了解决了什么问题,容器化技术与传统的虚拟化方式的区别,以及简要介绍了的几大核心概念镜像容器和仓库。针对上述问题,提供了的,通过使用指令配置的方式来创建镜像。 在前一篇文章 Docker学习与和应用(一)_初步认识中,我们初步介绍了Docker解决了什么问题,Docker容器化技术与传统的虚拟化方式的区别,以及简要介绍了Docker的几大...

    Ocean 评论0 收藏0
  • Docker学习之数据管理(5)

    摘要:下面创建一个名为的容器,并加载一个数据卷到容器的目录。如果需要在删除容器的同时移除数据卷。 容器内部以及容器之间的数据管理是怎么样进行的? showImg(https://segmentfault.com/img/bVbt7pw?w=667&h=275); 其实在 Docker 内部以及容器之间管理数据,在容器中管理数据主要有两种方式: 数据卷(Volumes) 挂载主机目录 (Bi...

    DesGemini 评论0 收藏0
  • Docker简介、常用命令与实践(二)

    摘要:上一篇简介常用命令与实践一六镜像操作获取镜像下载镜像到本地上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像。 【上一篇:Docker简介、常用命令与实践(一)】 六、Docker镜像操作 6.1 获取镜像(下载镜像到本地) Docker Hub 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像。从 Docker 镜像仓库获取镜像的命令是 docker pul...

    mykurisu 评论0 收藏0
  • Docker Volume 之权限管理(转)

    摘要:发现问题之后,相应的解决方法也很简单把当前目录的拥有者赋值给,再启动容器就一切正常了。这时我们已经可以知道容器的本地数据卷中文件目录的权限是和宿主机上一致的,只是在容器和宿主机中可能映射为不同的用户组名称。 Volume数据卷是Docker的一个重要概念。数据卷是可供一个或多个容器使用的特殊目录,可以为容器应用存储提供有价值的特性: 持久化数据与容器的生命周期解耦:在容器删除之后数据卷...

    sf190404 评论0 收藏0
  • Docker - 01 常用指令、参数配置速查表

    摘要:后续文谈到私仓非常有用。恢复数据卷首先运行了一个新容器作为数据恢复的目标。第二行指令启动了一个临时容器,这个容器挂载了两个,第一个与要恢复的共享,第二个将宿主机的当前目录挂载到容器的下。参考会煮咖啡的猫咪 showImg(https://segmentfault.com/img/remote/1460000016001552?w=615&h=456); 目录 01 Docker 常用...

    oneasp 评论0 收藏0

发表评论

0条评论

cocopeak

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<