天天看點

Dockerfile的使用詳解

什麼是Dockerfile

Dockerfile類似于我們學習過的腳本,将我們在上面學到的docker鏡像,使用自動化的方式實作出來。

Dockerfile的作用

1、找一個鏡像: ubuntu

2、建立一個容器: docker run ubuntu

3、進入容器: docker exec -it 容器 指令

4、操作: 各種應用配置

5、構造新鏡像: docker commit

Dockerfile 使用準則

​ 1、大: 首字母必須大寫D

​ 2、空: 盡量将Dockerfile放在空目錄中。

​ 3、單: 每個容器盡量隻有一個功能。

​ 4、少: 執行的指令越少越好。

Dockerfile 基礎四指令:

​ 基礎鏡像資訊 從哪來?

​ 維護者資訊 我是誰?

​ 鏡像操作指令 怎麼幹?

​ 容器啟動時執行指令 嗨!!!

Dockerfile使用指令:

建構鏡像指令格式:

docker build -t [鏡像名]:[版本号] [Dockerfile所在目錄]

參數詳解:

-t 指定建構後的鏡像資訊

定制dockerfile檔案

建立Dockerfile檔案

# 建構一個基于ubuntu的ssh定制鏡像

\# 基礎鏡像

FROM ubuntu-base

\# 鏡像作者

MAINTAINER President.Wang [email protected]

\# 執行指令

\# 增加軟體源

ADD sources.list /etc/apt/sources.list

\# 安裝 ssh 服務

RUN apt-get update && apt-get install -y openssh-server curl vim net-tools && mkdir -p /var/run/sshd && mkdir -p /root/.ssh && sed -i "s/.*pam_loginuid.so/#&/" /etc/pam.d/sshd && apt-get autoclean && apt-get clean && apt-get autoremove

\# 複制配置檔案到相應位置,并賦予腳本可執行權限

ADD authorized_keys /root/.ssh/authorized_keys

\# 對外端口

EXPOSE 22

\# 啟動ssh

ENTRYPOINT ["/usr/sbin/sshd","-D"]
           

建構鏡像

建構鏡像

docker build -t ubuntu-ssh .

效果檢視

使用新鏡像啟動一個容器,檢視效果

docker run -d -p 10086:22 ubuntu-ssh

容器檢查

docker ps

dockerfile指令詳解:

導入的鏡像源
FROM ubuntu
           
指定該檔案的維護者資訊
MAINTAINER  xxx
           
安裝軟體,并進行安裝判斷
添加檔案,添加壓縮檔案會解壓檔案
ADD a.txt /home   
           
添加目錄下檔案
ADD data  /home   
           
建立鏡像時,執行建立目錄
RUN mkdir /home/add   
           
添加壓縮檔案,不會解壓
COPY data.tar /home   
           
添加壓縮檔案,會解壓檔案
ADD data.tar /home/add 
           
運作容器直接跳轉到etc目錄下
WORKDIR  /etc 
           
當運作新的鏡像資源時,執行指令/指令
ENTRYPOINT echo hello docker

           
操作多個鏡像資源

單機版:Docker compose

檔案類型:ymal格式

啟動(需切換到執行檔案目錄下):docker-compose up -d

關閉:docker stop 服務名

檢視狀态:docker-compose ps -a

删除:docker-compose rm 服務名