三文搞懂學會Docker容器技術(下)
接着上面一篇:三文搞懂學會Docker容器技術(上)
三文搞懂學會Docker容器技術(中)
7,Docker容器目錄掛載
7.1 簡介
容器目錄掛載:
我們可以在創建容器的時候,將宿主機的目錄與容器內的目錄進行映射,這樣我們就可以實現宿主機和容器目錄的雙向數據自動同步;
7.2 作用
前面學過cp命令來實現數據傳遞,這種方式比較麻煩;
我們通過容器目錄掛載,能夠輕鬆實現代碼上傳,配置修改,日誌同步等需求;
7.3 實現
語法:
docker run -it -v /宿主機目錄:/容器目錄 鏡像名
多目錄掛載
docker run -it -v /宿主機目錄:/容器目錄 -v /宿主機目錄2:/容器目錄2 鏡像名
注意:
如果你同步的是多級目錄,可能會出現權限不足的提示;
這是因為Centos7中的安全模塊selinux把權限禁掉了,我們需要添加 –privileged=true 來解決掛載的目錄沒有權限的問題;
7.4 掛載目錄只讀
docker run -it -v /宿主機目錄:/容器目錄:ro 鏡像名
8,Docker遷移與備份
8.1 概述
我們開發的時候,經常自定義鏡像,然後commit提交成鏡像到本地倉庫,但是我們發布到客戶服務器的時候,可以用前面講得搞到hub官方,或者阿里雲,但是有些機密性的項目,是禁止公網存儲的,所以我們只能通過docker鏡像備份和遷移實現;
8.2 實現
備份鏡像:
docker save -o 備份鏡像的名稱 源鏡像名稱:tag版本
docker save -o mytomcat7.1.tar java1234/tomcat7:7.1
恢復鏡像:
docker load -i 鏡像文件
docker load -i mytomcat7.1.tar
9,DockerFile詳解
9.1 DockerFile簡介
Dockerfile是由一系列命令和參數構成的腳本,這些命令應用於操作系統(centos或者Ubuntu)基礎鏡像並最終創建的一個新鏡像;
我們前面講過的用手工的方式,修改配置文件,或者添加,刪除文件目錄的方式,來構建一種新鏡像;這種手工方式麻煩,容易出錯,而且不能復用;
我們這裏講Dockerfile,用腳本方式來構建自動化,可復用的,高效率的創建鏡像方式,是企業級開發的首選方式;
再軟件系統開發生命周期中,採用Dockerfile來構建鏡像;
1、對於開發人員:可以為開發團隊提供一個完全一致的開發環境;
2、對於測試人員:可以直接拿開發時所構建的鏡像或者通過Dockerfile文件構建一個新的鏡像開始工作;
3、對於運維人員:在部署時,可以實現應用的無縫移植。
9.2 DockerFile常用指令
FROM image_name:tag 定義了使用哪個基礎鏡像啟動構建流程
MAINTAINER user_info 聲明鏡像維護者信息
LABEL key value 鏡像描述元信息(可以寫多條)
ENV key value 設置環境變量(可以寫多條)
RUN command 構建鏡像時需要運行的命令(可以寫多條)
WORKDIR path_dir 設置終端默認登錄進來的工作目錄
EXPOSE port 當前容器對外暴露出的端口
ADD source_dir/file dest_dir/file 將宿主機的文件複製到容器內,如果是一個壓縮文件,將會在複製后自動解壓
COPY source_dir/file dest_dir/file 和ADD相似,但是如果有壓縮文件是不能解壓
VOLUME 創建一個可以從本地主機或其他容器掛載的掛載點,一般用來存放數據庫和需要保持的數據等
CMD 指定容器啟動時要運行的命令,假如有多個CMD,最後一個生效
ENTRYPOINT 指定容器啟動時要運行的命令
ONBUILD 當構建一個被繼承的Dockerfile時運行的命令,父鏡像在被子鏡像繼承後父鏡像的onbuild被觸發。可以把ONBUID理解為一個觸發器。
10,Docker私有倉庫
10.1 簡介
Docker私有倉庫主要是企業內部用來存放鏡像的倉庫,相對官方倉庫以及阿里雲倉庫,具有更高的保密安全級別;
10.2 私有倉庫搭建
第一步:拉取私有倉庫鏡像 (私有倉庫程序本身就是一個鏡像)
docker pull registry
第二步:啟動私有倉庫容器
docker run -di –name=myRegistry -p 5000:5000 registry
第三步:測試
http://192.168.1.112:5000/v2/_catalog
看到這個 說明啟動OK。因為倉庫里還沒有鏡像,所以就是空的;
第四步:etc/docker 修改daemon.json,讓docker信任私有倉庫地址
“insecure-registries”: [“192.168.1.112:5000”]
第五步:修改配置后重啟docker;
systemctl restart docker
10.3 私有倉庫測試
第一步:標記此鏡像為私有倉庫的鏡像
docker tag tomcat:7 192.168.1.112:5000/mytomcat7
第二步:上傳鏡像到私有倉庫
docker push 192.168.1.112:5000/mytomcat7
此時私有倉庫里已經有了這個鏡像;
第三步:刪除192.168.1.112:5000/mytomcat7本地倉庫鏡像
docker rmi -f 192.168.1.112:5000/mytomcat7
第四步:從私有倉庫拉取192.168.1.112:5000/mytomcat7鏡像,並運行;
docker run -it -p 8080:8080 192.168.1.112:5000/mytomcat7
第五步:瀏覽器運行 http://192.168.1.112:8080測試
——————————————————————————————————————————
作者: java1234_小鋒
出處:https://www.cnblogs.com/java688/p/13174647.html
版權:本站使用「CC BY 4.0」創作共享協議,轉載請在文章明顯位置註明作者及出處。
——————————————————————————————————————————
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※網頁設計公司推薦不同的風格,搶佔消費者視覺第一線
※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益
※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面
※南投搬家公司費用需注意的眉眉角角,別等搬了再說!
※新北清潔公司,居家、辦公、裝潢細清專業服務
※教你寫出一流的銷售文案?