Dockerfile入門實踐

Dockerfile入門實踐

本教程將通過一個具體實例闡述Dockerfile的基本用法,意在使大家對Dockerfile有個初步瞭解,並不旨在詳述Dockerfile的所有指令。在本案中將利用Dockerfile構建基於CentOS系統安裝Apache Web服務(httpd)的鏡像。

構建Dockerfile

在本地主機新建一個目錄(本文爲mydocker)存放Dockerfile文件,新建Dockerfile文件:

mkdir /mydocker
cd /mydocker
vim Dockerfile

向Dockerfile文件中添加如下內容,注意本示例基於CentOS系統。

FROM centos:latest

LABEL project="Dockerfile for Apache Web"

RUN yum -y install httpd

EXPOSE 80

VOLUME /var/www/html

ENTRYPOINT [ "/usr/sbin/httpd" ]
CMD ["-D", "FOREGROUND"]

Dockerfile文件簡述

此處僅簡要介紹一下上述文件中的Dockerfile指令,更多詳細信息參考:Dockerfile reference

FROM

"FROM"指令是Dockerfile的第一條命令,指定所構建鏡像的基礎鏡像。本例基於CentOS基礎鏡像。

LABEL

LABEL指令使用鍵值對方式向鏡像中添加元數據(metadata)。

RUN

鏡像的構建指令,在構建鏡像時運行某些命令。文中運行安裝httpd的指令。

EXPOSE

設置指令,指定鏡像將來生成的容器在運行時監聽的端口,即容器運行時打開該端口並監聽。這裏監聽Web服務的80端口。

VOLUME

VOLUME指令在鏡像中創建一個指定的掛載點,該掛載點可以共享主機的數據或者其他容器的數據。下文中指定“/var/www/html”爲掛載點,共享主機的“/data”目錄。

ENTRYPOINT

指定鏡像將來生成的容器運行時的執行命令入口。這裏採用ENTRYPOINT [“executable”, “param1”, “param2”]這種格式,指定web服務的可執行程序httpd。

CMD

作用與ENTRYPOINT類似,可以配合ENTRYPOINT使用。

生成docker鏡像

假設當前已經進入到mydocker目錄,使用"docker build"命令來生成鏡像

docker build -t centos:httpd .

注意:“.”不能遺漏,表示當前目錄。

啓動容器實例

首先,爲剛纔在Dockerfile中VOLUME創建掛載點。在本地主機下創建一個新目錄(/data目錄),用於掛載Apache Web的根目錄/var/www/html,對應Dockerfile文件中定義的“VOLUME /var/www/html”。

mkdir /data

隨後,啓動容器:

docker run -td -p 80:80 -v /data:/var/www/html --name=web centos:httpd

這裏-p指定本地主機和容器的端口映射,-v指定數據掛載(volume)。

查看啓動的容器實例:

docker ps

在這裏插入圖片描述

驗證Apache Web(Httpd)是否安裝成功

在/data目錄創建index.html文件,由於剛纔設定了卷的掛載,index.html將自動掛載到容器的/var/www/html目錄,而這個目錄是Apache Web的根目錄。

cd /data
vim index.html

添加如下內容:

This is an apache httpd test. Build with dockerfile on CentOS 7.
Data are on host but share with volumn /var/www/html on the Docker container.

最後使用"http://localhost/"進行測試,得到如下結果:

在這裏插入圖片描述

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