Dockerfile是用來產生image的script文件,可通過以下的描述來建構Image

所有的Dockerfile命令格式皆是

INSTALLATION arguments

 

指令請使用大寫表示 :

FROM 指令

FROM <image>

 或

FROM <image>:<tag>

 如果沒有指定tag預設將會是latest

 

RUN 指令

RUN <command>(the command is run a shell - '/bin/sh -C')

 或

RUN  ["executable", "paraml", "paraml2",............](exec form)

 RUN 指令等同於在shell中的

$docker run image_id

$dockeer  commit container_id

 COPY 指令:

COPY   <src> <dest>

 當Image被載入至Container後自動從從src(通常是本機)複製到dest(docker Container中)

CMD 指令:

CMD ["executable","param1","param2",.....] (like an exec, perferred form)

CMD ["param1","param2",....] (as default parameters to ENTRYPOINT)

CMD command param1 param2 (as a shell)

 一個Dockerfile裡只能有一個CMD,如果有多個,只有最後一個會生效

註解使用 # 代表

 透過幾個基礎指令後就可以先來做一個最簡單的image

# My First Image

# version 1.0

#

#

#

FROM scratch   #繼承0byte Image

CMD ["ls"]        #開啟後列出家目錄

 

建置Web Service Container

 

# Web service Image

# version 1.0

#

#

#

FROM httpd:2.4   #繼承apache-2.4 Image

COPY ./html/ /usr/local/apache2/htdocs       #將本目錄html中的網頁上傳至Container中

 

 

 

  •  執行Dockerfile 建置web service image
$docker  build .

 

 

 

Image製作完畢後即可透過 Image id 來開啟Container,但是Container中的網路與主機網路為各自獨立的環境,因此需要透過綁定網路連接埠(port)

讓我們可以連至內部的web service 瀏覽結果

$docker run –d –p 8081:80 [images_ID]

 啟動後將Container中的80 port 轉發至 主機的 8081 port,然後使用 -d 參數讓Container 於背景執行

  • 連線至Container中操作bash

 

$docker exec -t –i [container_ID] bash

 透過 exec指令即可連結至以上線的Container並執行bash 提供terminal操作環境

 

  • 最後結果如下 :

 

 

指令補充

  • 如果想要刪除已被使用過的Image必須先關閉container後並加以刪除,最後才能砍掉Image

$docker stop [container_id]

$docker rm [container_id]

$docker rmi [image_id]

  • -l 參數列出最新執行的container

$docker ps -l

  • -a 參數列出所有的container 連停止中的也會被列出來

$docker ps -a

 

 

 

創作者介紹
創作者 忽倫 的頭像
忽倫

一段輝煌的回憶,一個冬日的故事

忽倫 發表在 痞客邦 留言(0) 人氣()