docker容器间共享文件 多容器协作共享volume的权限问题

Docker volume使用详解及实例
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Docker volume使用详解及实例的相关资料,并附简单实例,帮助大家学习参考,需要的朋友可以看下
Docker volume使用
&&& 一个数据卷是一个特别指定的目录,该目录利用容器的UFS文件系统可以为容器提供一些稳定的特性或者数据共享。数据卷可以在多个容器之间共享。
&&&&& 创建数据卷,只要在docker run命令后面跟上-v参数即可创建一个数据卷,当然你也可以跟多个-v参数来创建多个数据卷,当创建好带有数据卷的容器后,你就可以在其他容器中通过--volumes-froms参数来挂载该数据卷了,而不管该容器是否运行。你也可以在Dockerfile中通过VOLUME指令来增加一个或者多个数据卷。
&&&&& 如果你有一些数据想在多个容器间共享,或者想在一些临时性的容器中使用该数据,那么最好的方案就是你创建一个数据卷容器,然后从该临时性的容器中挂载该数据卷容器的数据。例如如下操作:
#启动一个Volume_Container容器,包含两个数据卷
docker run -v /var/volume1 -v /var/volume2 -name Volume_Container ubuntu14.04 linux_command
#创建App_Container容器,挂载Volume_Container容器中的数据卷
docker run -t -i -rm -volumes-from Volume_Container -name App_Container ubuntu14.04 linux_command
#或者再创建一个容器,挂载App_Container中从Volume_Container挂载的数据卷
docker run -t -i -rm -volumes-from App_Container -name LastApp_Container ubuntu14.04 linux_command
&&&&& 1&&& 在一个终端内创建数据卷容器,并在数据卷目录内写入测试文件
&&&&& 2&&& 另打开一个容器,挂载上一个数据卷容器的数据卷,查看测试文件
&&&&&&&&& 即使你删除了刚开始的第一个数据卷容器或者中间层的数据卷容器,只要有其他容器使用数据卷,数据卷都不会被删除的。
&&&&& 你也可以把一个本地主机的目录当做数据卷挂载在容器上,同样是在docker run后面跟-v参数,不过-v后面跟的不再是单独的目录了,他是[host-dir]:[container-dir]:[rw|ro]这样格式的,host-dir是一个绝对路径的地址,如果host-dir不存在,则docker会创建一个新的数据卷,如果host-dir存在,但是指向的是一个不存在的目录,则docker也会创建该目录,然后使用该目录做数据源。例如:
docker run -i -t -v /tmp:/mnt ubuntu/14.04:14.04 /bin/bash
&&&&&&& 你不能使用docker export、save、cp等命令来备份数据卷的内容,因为数据卷是存在于镜像之外的,但是总会有变通方法的,如下:
docker run -rm --volumes-from DATA -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data
&&&&&&&&& 创建一个新容器,挂载数据卷容器,同时挂载一个本地目录,然后把远程数据卷容器的数据卷通过备份命令备份到映射的本地目录里面。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具登录以解锁更多InfoQ新功能
获取更新并接收通知
给您喜爱的内容点赞
关注您喜爱的编辑与同行
966,690 十月 独立访问用户
语言 & 开发
架构 & 设计
文化 & 方法
您目前处于:
Docker的几个实战经验分享
Docker的几个实战经验分享
4&他的粉丝
日. 估计阅读时间:
:Facebook、Snapchat、Tumblr等背后的核心技术
Author Contacted
语言 & 开发
64 他的粉丝
58 他的粉丝
Docker 应用
0 他的粉丝
19 他的粉丝
相关厂商内容
相关赞助商
告诉我们您的想法
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
赞助商链接
架构 & 设计
文化 & 方法
<及所有内容,版权所有 &#169;
C4Media Inc.
服务器由 提供, 我们最信赖的ISP伙伴。
北京创新网媒广告有限公司
京ICP备号-7
找回密码....
InfoQ账号使用的E-mail
关注你最喜爱的话题和作者
快速浏览网站内你所感兴趣话题的精选内容。
内容自由定制
选择想要阅读的主题和喜爱的作者定制自己的新闻源。
设置通知机制以获取内容更新对您而言是否重要
注意:如果要修改您的邮箱,我们将会发送确认邮件到您原来的邮箱。
使用现有的公司名称
修改公司名称为:
公司性质:
使用现有的公司性质
修改公司性质为:
使用现有的公司规模
修改公司规模为:
使用现在的国家
使用现在的省份
Subscribe to our newsletter?
Subscribe to our industry email notices?
我们发现您在使用ad blocker。
我们理解您使用ad blocker的初衷,但为了保证InfoQ能够继续以免费方式为您服务,我们需要您的支持。InfoQ绝不会在未经您许可的情况下将您的数据提供给第三方。我们仅将其用于向读者发送相关广告内容。请您将InfoQ添加至白名单,感谢您的理解与支持。把玩jenkins docker镜像遇到的volume权限问题 - 简书
把玩jenkins docker镜像遇到的volume权限问题
这两天在玩jenkins,但是在挂在数据卷的时候遇到了权限问题,如下,
docker启动命令
docker run -d -v /root/jenkins:/var/jenkins_home -P --name jenkins-server jenkins
这个命令看似没有什么问题,但容器就是启动不起来,执行docker ps -a,查看container,如下,
[root@esslog-shqs-6 ~]# docker ps -a
CONTAINER ID
274d92964edb
"/bin/tini -- /usr/lo"
2 minutes ago
Exited (1) 2 minutes ago
jenkins-server
接着执行docker logs jenkins-server查看container日志,如下
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
日志中出现了一个Permission denied错误,,以我目前的功力还不清楚是什么问题造成的,但是在和两篇博客中找到了答案,在执行docker run命令的时候增加一个-u参数,如下改进后的命令,
docker run -d -v /root/jenkins:/var/jenkins_home -u 0 -P --name jenkins-server jenkins
这命令的意思是覆盖容器中内置的帐号,该用外部传入,这里传入0代表的是root帐号Id。这样再启动的时候就应该没问题了。
如果按照上面做还是出现Permission denied错误,那么可以检查一下selinux状态,开启的情况下会导致一些服务安装、使用不成功。
查看selinux状态,
[root@localhost ~]# sestatus
SELinux status:
SELinuxfs mount:
/sys/fs/selinux
SELinux root directory:
/etc/selinux
Loaded policy name:
Current mode:
Mode from config file:
Policy MLS status:
Policy deny_unknown status:
Max kernel policy version:
临时关闭,
[root@localhost ~]# setenforce 0
永久关闭,可以修改配置文件/etc/selinux/config,将其中SELINUX设置为disabled,如下,
[root@localhost ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
enforcing - SELinux security policy is enforced.
permissive - SELinux prints warnings instead of enforcing.
disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
targeted - Targeted processes are protected,
minimum - Modification of targeted policy. Only selected processes are protected.
mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@rdo ~]# sestatus
SELinux status:
参考文章:
一名基层IT开发人员,有梦想,有动力,脑子有点笨,一直在努力。docker 容器挂载volumes与容器共享 - CSDN博客
docker 容器挂载volumes与容器共享
1.使用图比较好理解
1.我们使用busybox挂载主机的某个'目录'
docker run -it --rm --name datavol -v /DataMount busybox:latest /bin/sh
volume是挂载在datavol的/DataMount,那主机的那个目录被挂载呢,我们使用inspect查看
挂载在source指定的地方,我们可以在该目录创建文件然后在datavol验证
2.不同容器通过使用同一个挂载实现数据共享
docker run -it --rm --volumes-from datavol ubuntu:latest /bin/bash
我们这里使用了datavol的挂载,在开头的图片已经指明
本文已收录于以下专栏:
相关文章推荐
假设大家已经对Docker比较熟悉,前段时间在使用Docker中的Volume-from的时候遇到一个问题,就是如果同时从两个不同的Docker容器(Container)中,使用Volume-from...
最简单的hello world输出镜像的制作是最简单的开始,但是如果我们需要修改我们的运行代码,或者有输入输出文件的时候,我们就没有办法了,每一个container运行完毕后,其分配的资源以及文件系统...
docker可以支持把一个宿主机上的目录挂载到镜像里。
docker&#160;run&#160;-it&#160;-v&#160;/home/dock/Downloads:/usr/Downl...
创建volumes容器
docker create -v
–name 运行容器并挂载data volumes
docker run -d –volumes-from mydata -p 10...
本机运行环境为Win7+Docker Toolbox,
使用Toolbox创建了Docker虚拟机,
拟在Docker 虚拟机上运行httpd Docker容器。
到官网下载一个h...
Docker的网络一般是由在Host主机上的一个veth{id}的虚拟网卡和一个container里面的eth0一一映射
,我们可以看到,在宿主机创建了一个默认Docker0的网桥,该网桥负责把数据流...
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)把玩jenkins docker镜像遇到的volume权限问题 - CSDN博客
把玩jenkins docker镜像遇到的volume权限问题
这两天在玩jenkins,但是在挂在数据卷的时候遇到了权限问题,如下,
docker启动命令
docker run -d -v /root/jenkins:/var/jenkins_home -P --name jenkins-server jenkins
这个命令看似没有什么问题,但容器就是启动不起来,执行docker ps -a,查看container,如下,
[root@esslog-shqs-6 ~]
CONTAINER ID
274d92964edb
"/bin/tini -- /usr/lo"
2 minutes ago
Exited (1) 2 minutes ago
jenkins-server
接着执行docker logs jenkins-server查看container日志,如下
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
日志中出现了一个Permission denied错误,,以我目前的功力还不清楚是什么问题造成的,但是在和两篇博客中找到了答案,在执行docker run命令的时候增加一个-u参数,如下改进后的命令,
docker run -d -v /root/jenkins:/var/jenkins_home -u 0 -P --name jenkins-server jenkins
这命令的意思是覆盖容器中内置的帐号,该用外部传入,这里传入0代表的是root帐号Id。这样再启动的时候就应该没问题了。
如果按照上面做还是出现Permission denied错误,那么可以检查一下selinux状态,开启的情况下会导致一些服务安装、使用不成功。
查看selinux状态,
[root@localhost ~]
SELinux status:
SELinuxfs mount:
/sys/fs/selinux
SELinux root directory:
/etc/selinux
Loaded policy name:
Current mode:
Mode from config file:
Policy MLS status:
Policy deny_unknown status:
Max kernel policy version:
临时关闭,
[root@localhost ~]
永久关闭,可以修改配置文件/etc/selinux/config,将其中SELINUX设置为disabled,如下,
[root@localhost ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
enforcing - SELinux security policy is enforced.
permissive - SELinux prints warnings instead of enforcing.
disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
targeted - Targeted processes are protected,
minimum - Modification of targeted policy. Only selected processes are protected.
mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@rdo ~]# sestatus
SELinux status:
参考文章:
本文已收录于以下专栏:
相关文章推荐
Ubuntu安装微信教程 超简单的[5P]
这次我用的系统是Ubuntu 16.04 x86,在网上先去下载electronic-wechat-linux
https://github.co...
介绍TensorFlow(TM) 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研...
安装步骤1.下载仓库git clone /geeeeeeeeek/electronic-wechat.git2.安装 git sudo apt-get instal...
这次我用的系统是Ubuntu 16.04 x86,在网上先去下载electronic-wechat-Linux/geeeeeeeeek/electronic-wec...
推荐参考网址:
/application/
1.对于析构函数,一定要以virtual ~A();来标示所有的子类,父类的析构函数
2.对于静态初始化,由于对函数名命名有严格规定,也就是说若是A。cpp、b。cpp的静态函数,会依靠pro里的cp...
在标题栏显示网速能即使
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 docker 容器 目录权限 的文章

 

随机推荐