Docker數據卷和dockerfile

目錄

docker數據卷


docker數據卷

docker run -it -v /宿主機絕對路徑目錄:/容器內容目錄  鏡像名

//此命令會自動創建相應的目錄。命令成功之後,就建立了宿主機與容器內目錄的共享,雙邊的改動雙邊都能看見。

容器退出 -> 宿主機修改共享目錄下面的文件 -> docker start $(docker ps -l) 此種方式可以重新啓動docker,並且能夠共享剛纔的目錄。

docker run -it -v /宿主機絕對路徑目錄:/容器內目錄:io  鏡像名

帶權限啓動共享目錄。容器內只能讀取,不能修改。

Dockerfile與數據卷

可到https://hub.docker.com上search相關鏡像,後邊一般都有dockerfile查看例子的好去處。

可參照那裏,寫一個簡單的Dockerfile

FROM centos
VOLUME ["/dataVolumeContainer1", "/dataVolumeContainer2"]
CMD echo "finished, ------success1"
CMD /bin/bash

運行命令根據Dockerfile build出一個鏡像:

docker build -f /root/myDocker/Dockerfile -t zzyy/centos .

生成一個鏡像,以docker run -it zzyy/centos 命令跑這個鏡像之後,會自動在容器中生成

/dataVolumeContainer1, /dataVolumeContainer2兩個目錄,同事默認的在宿主機/var/lib/docker/volumes/容器目錄1ID/_data生成相應的共享目錄於容器種對應起來。這些信息可以通過docker inspect 容器ID查看到。

如果出現docker容器內訪問出現cannot open directory:Permission denied,則在掛載目錄候多加 --privileged=true參數。

數據卷容器:命名的容器掛載數據卷,其它容器通過掛載這個(父容器)實現數據共享,掛載數據卷的容器稱爲數據卷容器。

docker run -it --name dc01 zzyy/centos 這個會啓動一個名字爲dc01的容器,而且根據上面的Dockerfile它會掛載兩個共享目錄。

docker run -it --name dc02 --volumes-from dc01 zzyy/centos這個命令會共享dc01的那兩個共享目錄。

此時刪掉 dc01,共享的數據還存在,又創建 dc03,dc03也能夠繼承共享的目錄。直到沒有容器存活,共享的目錄纔會死去。

 

Dockerfile語法基礎

基礎規則:

1.每條保留字指令都必須大寫字母且後面要跟隨至少一個參數

2. 指令按照從上到下,順序執行: docker build -f /root/Dockerfile2 -t 新鏡像名字:TAG .     //.表示當前路徑, -f表示Dockerfile路徑

3. #表示註釋,每條指令都會創建一個新的鏡像層,並對鏡像進行提交

關鍵字:

FROM #基礎鏡像當前鏡像是基於哪一個基礎鏡像的,

MAINTAINER #鏡像維護者的姓名和郵箱

RUN #容器構建時需要運行的命令

EXPOSE # 當前容器對外暴露出的端口

WORKDIR #指定在創建容器後,終端默認登錄的進來工作目錄,一個落腳點

ENV  #用來在構建鏡像過程中設置環境變量

ADD #將宿主機目錄下的文件拷貝進鏡像且ADD命令會自動處理URL和解壓tar壓縮包

COPY #類似ADD, 拷貝文件和目錄到鏡像中,將從構建上下文目錄中<源路徑>的文件/目錄複製到新的一層鏡像內目標路徑位置上,如COPY src dst;   COPY ["src", "dst"]

VOLUME #容器數據卷,用於數據保存和持久化工作

CMD #指定一個容器啓動時要運行的命令,Dockerfile中可以有多個CMD指令,但只有最後一個生效,CMD會被docker run之後的參數替換

ENTRYPOINT #指定一個容器啓動時要運行的命令,和CMD一樣都是指定容器啓動程序和參數。docker run後面的參數會追加到ENTRYPOINT後面

ONBUILD #當構建一個被繼承的Dockerfile時運行命令,父鏡像在被子繼承後父鏡像的onbuild被觸發

Docker安裝常規步驟

docker search MySQL  //先去倉庫查找要安裝的鏡像

 docker pull mysql:5.6 //想要安裝的鏡像,先把它拉取下來,一般是拉取star最多的那個

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章