相比docker commit來說,Dockerfile的方法會更加自動化,更加方便快捷,而且功能也更強大。拿構建Nginx容器舉例。
先建立一個目錄
mkdir /opt/docker-file
進入目錄
cd /opt/docker-file/
然後建立一個nginx目錄並進入,建立一個Dockerfile檔案並寫入一些命令
cd nginx
vim Dockerfile
#This is my docker file
#Version 1
#Auth Wt
#Base
FROM centos #基礎映象是centos,後面跟有效的映象名(如果該映象你的本地倉庫沒有則會從遠端倉庫Pull取)。後面的指令在些映象中執行
MAINTAINER wt #告訴別人,是誰建立的(維護者資訊)
ADD pcre-8.39.tar.gz /usr/local/src #打包一些檔案(這裡是下載好之後的,下載好的檔案必須也是同級目錄,這裡使用ADD命令,如果是一個壓縮包不需要解壓命令,它會自動幫我們解壓)
ADD nginx-1.13.4.tar.gz /usr/local/src
RUN yum install -y wget gcc gcc-c++ make openssl-devel #執行一些系統命令,每一條RUN指令(可能會有多條linux命令)會在當前容器最上面的可讀寫層執行並且提交成一個新的映象層,接下來的指令會在這個新的鏡
像層裡執行。
RUN useradd -s /sbin/nologin -M www
WORKDIR /usr/local/src/nginx-1.13.4 #進入指定目錄工作。
RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.39 && make && make install
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf #修改nginx自啟動
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80 #指定容器對外暴露的埠號。
CMD ["nginx"] #指定你製作出來的映象在啟動成容器時執行命令的預設的引數。
Dockerfile 寫完之後開始構建
docker build -t nginx-file:v1 /opt/docker-file/nginx
接下來就可以看到每一步的操作了,每一步都有一個ID,都是一個層級。
最後訪問宿主機的IP就可以看到Nginx的歡迎介面了。
當然此案例只是一個入門,做到更深入全面的操作還需要更多的實際專案參與。