系列文章目錄
【微服務實戰(zhàn)之Docker容器】第一章-下載及安裝
坑:容器卷記得加入以下命令配置
--privileged=true
Docker掛載主機目錄訪問如果出現(xiàn)cannot open directory .: Permission denied解決辦法:
在掛載目錄后多加一個–privileged=true參數(shù)即可 如果是CentOS7安全模塊會比之前系統(tǒng)版本加強,不安全的會先禁止,所以目錄掛載的情況被默認為不安全的行為,在SELinux里面掛載目錄被禁止掉了額,如果要開啟,我們一般使用–privileged=true命令,擴大容器的權限解決掛載目錄沒有權限的問題,也即使用該參數(shù),container內的root擁有真正的root權限,否則,container內的root只是外部的一個普通用戶權限。
是個啥?
一句話:有點類似我們Redis里面的rdb和aof文件
將docker容器內的數(shù)據(jù)保存進宿主機的磁盤中
運行一個帶有容器卷存儲功能的容器實例
docker run -it --privileged=true -v /宿主機絕對路徑目錄:/容器內目錄 鏡像名
參照上章的運行私服容器:
docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry
主要目的是為了防止重要資料丟失,資料存儲在宿主機上
能干啥?
將運用與運行的環(huán)境打包鏡像,run后形成容器實例運行 ,但是我們對數(shù)據(jù)的要求希望是持久化的 Docker容器產(chǎn)生的數(shù)據(jù),如果不備份,那么當容器實例刪除后,容器內的數(shù)據(jù)自然也就沒有了。
為了能保存數(shù)據(jù)在docker中我們使用卷。
特點:
1:數(shù)據(jù)卷可在容器之間共享或重用數(shù)據(jù)
2:卷中的更改可以直接實時生效,爽
3:數(shù)據(jù)卷中的更改不會包含在鏡像的更新中
4:數(shù)據(jù)卷的生命周期一直持續(xù)到?jīng)]有容器使用它為止
基本的命令
docker run -it --privileged=true -v /宿主機絕對路徑目錄:/容器內目錄 鏡像名
查看是否掛載成功,使用以下命令查看容器所有的配置,然后找到Mounts
docker inspect 容器ID
這種方式實現(xiàn)的數(shù)據(jù)卷綁定,容器(注意不是鏡像)與宿主機會持久綁定,當容器重啟時這種綁定關系依然存在,感興趣的小伙伴可以自己嘗試一下。
先啟動linux容器綁定卷–》在容器內對應目錄下創(chuàng)建文件–》在容器外對應目錄下創(chuàng)建文件–》分別在容器內外查看對應目錄–》把容器停止–》在容器外創(chuàng)建文件–》把容器通過id重新啟動–》查看容器內文件
O(∩_∩)O,依然一致
讀寫規(guī)則映射添加說明
有時需要只允許容器讀取,不允許容器寫入
docker run -it --privileged=true -v /宿主機絕對路徑目錄:/容器內目錄:ro 鏡像名
ro = read only(只讀)
docker默認的是rw,可讀可寫
卷的繼承和共享
–volumes-from 父類
docker run -it --privileged=true --volumes-from 父類 --name u2 ubuntu
這條命令可以實現(xiàn)容器間的卷繼承,這種方式可以實現(xiàn)容器間的文件共享,我們測試一下
docker run -it --privileged=true -v /dockerdir:/tmp/testdocker --name u1 ubuntu
啟動一個名為u1的ubuntu容器,綁定上卷,進入到u1容器的/tmp/testdocker目錄下,創(chuàng)建一個名為u1.txt的文件
touch u1.txt
進入主機的/dockerdir/下,發(fā)現(xiàn)已有文件。
然后再使用命令,啟動一個u2,繼承u1的卷
docker run -it --privileged=true --volumes-from u1 --name u2 ubuntu
然后進入到u2的/tmp/testdocker目錄下,發(fā)現(xiàn)也有對應文件
然后使用u2創(chuàng)建一個u2.txt
touch u2.txt
到u1下發(fā)現(xiàn)也已經(jīng)有了,這就實現(xiàn)了文件的共享
接著我們把u1和u2都停掉,重啟u2
docker stop u1
docker stop u2
docker start u2
接著進入u2的命令行界面
docker exec -it u2 /bin/bash
發(fā)現(xiàn)文件依然存在
這說明了docker的卷繼承是永久性的,不會隨著容器的重啟而消失。
大家可以自己測試一下容器的刪除是否會對此有影響。
docker rm u1
(多敲,命令才會熟練)文章來源:http://www.zghlxwxcb.cn/news/detail-732327.html
今天就到這里啦??文章來源地址http://www.zghlxwxcb.cn/news/detail-732327.html
到了這里,關于【微服務實戰(zhàn)之Docker容器】第四章-【微服務實戰(zhàn)之Docker容器】第三章-鏡像倉庫的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!