1. 程式人生 > >三文搞懂學會Docker容器技術(下)

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

------------------------------------------------------------------------------------------------------------------------------

&n