以建立一個web服務器的鏡像爲例:html
首先建立一個目錄並進入建立Dockerfile文件。這個目錄是構建環境還有在構建過程當中須要上傳到構建鏡像中文件的本地存放位置nginx
mkdir web_file cd web_file touch Dockerfile
vim Dockerfile構建一個簡單的鏡像文件web
# Version: 0.0.1 FROM ubuntu:14.04 MAINTAINER 做者 Turnbull 「郵箱」 RUN apt-get update && apt-get install -y nginx RUN echo 'hello' > /usr/share/nginx/html/index.html EXPOSE 80
Dockerfile是由指令和參數組成,每條指令都必須爲大寫字母,順序從上到下執行。docker
FROM 指定一個鏡像做爲基礎鏡像ubuntu
MAINTAINER 來定義做者還有郵箱標識全部者和聯繫方式vim
RUN 定義在鏡像中運行的命令數組
#在目錄下執行構建命令
docker bulid -t=「yy/static_web」 .
-t 設置新鏡像的倉庫和名稱bash
. 表示在本地目前去尋找Dockerfile文件,1.5以後能夠經過-f來指定文件路徑服務器
docker history 鏡像ID 來查看新鏡像的每層的構建
啓動新鏡像網絡
docker run -d -p 80 --name static_web yy/static_web nginx -g "daemon off;"
這裏經過yy/static_web鏡像啓動一個名爲static_web的新容器,-d表示用於後臺運行, nginx -g "daemon off;"容器中運行的命令表示之前臺方式啓動nginx
-p 控制docker容器在運行時公開的網絡端口給宿主機
-p 9090:80 表示將容器的80端口綁定本地宿主機的9090端口
-P 對外公開在dockerfile中expose公開的端口綁定到宿主機隨機的一個端口
查看容器端口綁定的IP
docker port 鏡像ID 端口
CMD
指定一個容器啓動時要運行的命令,相似於RUN,RUN是指定構建是運行的命令
運行命令放在數組結構中,-l是能夠加傳遞的參數;注意:RUN命令會覆蓋CMD的命令
CMD ["/bin/bash","-l"]
WORKDIR
從鏡像建立一個新的容器時,在容器內部設置一個工做目錄
WORKDIR /opt/webapp/db
RUN bundle install
WORKDIR /opt/webapp
表示將工做目錄切換爲/opt/webapp/db後執行了命令後又切換到/opt/webapp
注意:能夠經過 -w標誌在運行時覆蓋工做目錄
如:run -t -w /var/log
ENV
用來在鏡像構建過程當中設置環境變量
ENV HOME_PATH /home/rvm
WORKDIR $HOME_PATH
USER
用來指定改鏡像用什麼身份來運行,能夠指定用戶名或者UID、組、GID
運行時使用-u來覆蓋
VOLUME
基於鏡像建立的容器添加捲
ADD
將構建環境下的文件和目錄複製到鏡像中
ADD nginx.conf /etc/nignx.conf
ADD laster.tar.gz /var/www/html 能夠將壓縮的文件服務過去自動解壓
COPY
至關於ADD 但不會有自動解壓