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
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
留言列表