云原生学习

学习k8s的实验资料


docker数据卷

<h1>docker容器的数据卷</h1> <h2>什么是数据卷?</h2> <p>数据卷是经过特殊涉及的目录,可以绕过联合文件系统(UFS),为一个或多个容器提供访问,数据卷设计的目的在于数据的永久储存,它完全独立于容器的生存周期,因此,docker不会在容器删除时删除器挂载的数据卷,也不会存在类似的垃圾收集机制,对容器引用的数据卷进行吹,同一个数据卷可以支持多个容器的访问。</p> <h2>数据卷的特点:</h2> <ol> <li>数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会被拷贝到新初始化的数据卷中;</li> <li>数据卷可以在容器之间共享和重用;</li> <li>可以对数据卷里的内容进行直接修改;</li> <li>数据卷的变化不会影响镜像的更新</li> <li>卷会一直存在,即使挂载数据卷的容器已经被删除 <h2>数据卷的使用</h2></li> <li>为容器添加数据卷:<code>docker run -v /datavolume:/data -it centos /bin/bash</code> 例如:<code>docker run --name volume -v ~/datavolume:/data -itd centos /bin/bash</code> ~/datavolume为宿主机目录,/data为docker启动的volume容器的里的目录,这样在宿主机的/datavolume目录下创建的数据就会同步到容器的/data目录下 <ul> <li>为数据卷添加访问权限 <code>docker run --name volume1 -v ~/datavolume1:/data:ro -itd centos /bin/bash</code> ro:只读权限,添加只读权限之后在docker容器的/data目录下就不能在创建文件了,为只读权限;在宿主机下的/datavolume1下可以创建东西 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=9673ad8f2d42c8b3fc132263e9a13cf4&amp;amp;file=file.png" alt="" /></li> </ul></li> <li>使用dockerfile构建包含数据卷的镜像 dockerfile指令:<code>volume [&amp;quot;/data&amp;quot;]</code> <pre><code class="language-shell">cat dockerfile FROM centos VOLUME [&amp;quot;/datavolume3&amp;quot;,&amp;quot;/datavolume4&amp;quot;] CMD /bin/bash #使用如下构建镜像 docker build -t=&amp;quot;volume&amp;quot; . #启动容器 docker run --name volume-dubble -it volume #会看到这个容器下有两个目录,/datavolume3和/datavolume6</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=6ffddcbefb296617327da8f5873ddff7&amp;amp;file=file.png" alt="" /> <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=e6ce4fe6308ebef6f45c760af7b29bb3&amp;amp;file=file.png" alt="" /> <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=9d84953a1642f7e1c70f180c0a5ee5cb&amp;amp;file=file.png" alt="" /> <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=734f8bec32e68f6d813542b7fd320f9e&amp;amp;file=file.png" alt="" /> <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=140a5822811bea8f04543c31189a2e6c&amp;amp;file=file.png" alt="" /></p> <h1>docker的数据卷容器</h1> <h2>什么是数据卷容器:命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器,就叫做数据卷容器。</h2> <h2>挂载数据卷容器的方法:<code>docker run --volumes-from [container name]</code></h2> <p>例如:</p> <pre><code class="language-shell">#运行一个容器,volume镜像是上例创建的带两个数据卷/datavolume3和/datavolume6的镜像 docker run --name data-volume -itd volume #进入容器 docker exec -it data-volume /bin/bash #创建文件 touch /datavolume3/lucky.txt #退出容器 exit #创建一个新容器挂载到data-volume这个容器创建的数据卷 docker run --name data-volume2 --volumes-from data-volume -itd centos /bin/bash #进入到新建的容器 docker exec -it data-volume2 /bin/bash #查看容器的/datavolume3目录下是否新建了lucky.txt cd /datavolume3</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=037aa875b80ef91337456d3c16952b09&amp;amp;file=file.png" alt="" /></p></li> <li>docker数据卷的备份和还原 数据备份: <code>docker run --volumes-from [container name] -v $(pwd):/backup centos tar czvf /backup/backup.tar [container data volume]</code> 例如: <code>docker run --volumes-from data-volume2  -v  /root/backup:/backup --name datavolume-copy centos tar zcvf /backup/data-volume2.tar.gz /datavolume6</code> 数据还原: <code>docker run --volumes-from [container name] -v $(pwd):/backup centos tar xzvf /backup/backup.tar.gz [container ndata volume]</code> 例如: <pre><code class="language-shell">docker exec -it data-volume2 /bin/bash cd /datavolume3 rm -rf lucky.txt exit docker run --volumes-from data-volume2 -v /root/backup:/backup centos tar zxvf /backup/data-volume.2.tar.gz -C /datavolume3 docker exec -it data-volume2 /bin/bash cd /datavolume6 #此时就可以看到还原后的数据</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c78cfd61987d227343c0048c78ee160b&amp;amp;file=file.png" alt="" /></p></li> </ol>

页面列表

ITEM_HTML