三文搞懂學會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」創作共享協議,轉載請在文章明顯位置註明作者及出處。

——————————————————————————————————————————

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

新北清潔公司,居家、辦公、裝潢細清專業服務

※教你寫出一流的銷售文案?