Docker鏡像建立方法 建立鏡像的方法有三種,分別是基於已有的鏡像建立、基於本地模板建立、基於Dockerfile 建立,下面着重介紹這三種建立鏡像的方法。 linux
首先將鏡像加載到容器,將容器裏面運行的程序及運行環境打包起來生成新的鏡像,須要記住該容器的ID號。
命令格式: docker commit 【選項】 容器ID/名稱 倉庫名稱:【標籤】nginx
經常使用選項:docker
-m:說明信息
-a:做者信息
-p:生成過程當中中止容器的運行apache
docker create -it nginx /bin/bash #啓動容器
docker ps -a #查看容器
docker commit -m "new" -a "zhao" 6f69698fc083 nginx:test #建立新鏡像
docker images #查看鏡像vim
經過導入系統模板文件能夠生成鏡像,模板能夠從OPENVZ開源項目下載
下載地址爲:http://download.openvz.org/template/precreatedcentos
下面以debian模板壓縮包導入爲本地鏡像的例子。
wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz
cat debian-7.0-x86-minimal.tar.gz | docker import - nginx:newbash
Dockerfile是由一組指令組成的文件,每條指令對應linux中一條命令,Docker程序將讀取Dockerfile中的指令生成指定鏡像。
Dockerfile大體結構:基礎鏡像信息、維護者信息、鏡像操做指令、容器啓動時執行指令。每行支持一條指令,每條指令能夠攜帶多個參數,支持以 # 開頭的註釋。ide
Dockerfile操做指令:ui
FROM 鏡像 : 指定新的鏡像所基於的鏡像
MAINTAINER 名字 :說明新鏡像的維護人
RUN 命令 : 在所基於的鏡像上執行命令,並提交到新的鏡像中
CMD ["要運行的程序","參數1","參數2"] : 指定啓動容器時要運行的命令或腳本
EXPOSE端口號 : 指定新鏡像加載到Docker時要開啓的端口
ENV環境變量 變量值 : 設置一個環境變量的值,會背後面的RUN用到
ADD源文件/目錄 目標文件/目錄 :將源文件複製到目標文件 ,源文件和Dockerfile位於同一目錄
COPY源文件/目錄 目標文件/目錄 :將本地主機的源文件複製到目標目錄,源文件和Dockerfile位於同一目錄
VOLUME["目錄"] : 在容器中建立一個掛載點
USER 用戶名 /UID :指定運行容器時的用戶
WORKDIR路徑 : 爲後續的RUN 、CMD、ENTRYPOINT 指定工做目錄
ONBUILD命令 : 指定所生成的鏡像做爲一個基礎鏡像時所要運行的命令。this
mkdir httpd 建立目錄
cd httpd #切換目錄
vim Dockerfile #編寫dockerfile
#基於基礎鏡像 FROM centos #用戶信息 MAINTAINER this is httpd image <zhao> #添加環境包 RUN yum install -y httpd #指定http端口 EXPOSE 80 #添加宿主機中run.sh到容器中 ADD run.sh /run.sh RUN chmod 755 /run.sh CMD ["/run.sh"]
vim run.sh #編寫httpd啓動腳本
#!/bin/bash rm -rf /run/httpd/* exec /usr/sbin/apachectl -D FOREGROUND
docker build -t httpd:new . #建立新鏡像(不要忘了末尾的有 .)
docker run -d -p 80:80 httpd:new #啓動鏡像
docker ps #查看
網頁驗證