Dockerfile構建鏡像

以建立一個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 端口

 

Dockerfile指令

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 但不會有自動解壓

相關文章
相關標籤/搜索