Docker 鏡像建立方法

Docker 鏡像建立方法

Docker鏡像建立方法 建立鏡像的方法有三種,分別是基於已有的鏡像建立、基於本地模板建立、基於Dockerfile 建立,下面着重介紹這三種建立鏡像的方法。 linux

1、基於已有鏡像建立

首先將鏡像加載到容器,將容器裏面運行的程序及運行環境打包起來生成新的鏡像,須要記住該容器的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

Docker 鏡像建立方法

2、基於本地模板建立

經過導入系統模板文件能夠生成鏡像,模板能夠從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

3、基於Dockerfile建立(重點)

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

Dockerfile例子:

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 #查看

Docker 鏡像建立方法

Docker 鏡像建立方法

Docker 鏡像建立方法

網頁驗證

Docker 鏡像建立方法

相關文章
相關標籤/搜索