在映象的常用操作那篇文章我們講到在現有映象的基礎上建立新的映象,本篇文章我們來學習下使用dockerfile建立映象。什麼是dockerfile?
定義:dockerfile示例:dockerfile是乙個文字格式的配置檔案,使用者可以使用dockerfile快速建立自定義映象。
基本結構:
dockerfile由一行行的命令語句組成。並且支援以#開頭的注釋行。一般dockerfile分為四個部分:基礎映象資訊、維護者資訊、映象操作指令和容器啟動時的指令。
#this is a dockerfile
#author:linsuren
#第一行必須指定基礎映象
from ubuntu
#維護者資訊
maintainer #映象的操作指令
run apt-get update && apt-get install –y nginx
run echo 「\ndaemon off」 >> /etc/nginx/nginx.conf
#容器啟動時的指令
cmd /usr/sbin/nginx
操作一下:
首先建立目錄testdockerfile並進入,然後編輯dockerfile檔案
建立命令:
docker build –t ="《映象名稱》" .
注意:執行此命令要和dockerfile在同級目錄,檔名稱必須為dockerfile。命令後面的」.」表示在當前目錄下執行。
格式為from 或:
第一條指令必須為from指令,用於指定基礎映象。
格式為maintainer
,指定維護者資訊。
格式為run
,會在shell終端執行命令。
格式為expose [...]
,容器需要暴露的埠號。映象啟動可以通過–p
或-p
進行埠對映的繫結。
格式為env
指定乙個環境變數,可以被後續的run引用,並且在容器中記錄該環境變數。
格式為add
該命令將複製指定的到容器中的
。其中
可以是dockerfile所在目錄的乙個相對路徑;也可以是url,還可以是tar檔案(自動解壓)。
格式為volume [path]
建立乙個可以從本地主機或其他容器掛載點,一般用來存放需要保持的資料。
格式為user
指定執行容器時的使用者名稱,後續的run也會指定該使用者。
格式為workdir
指定工作空間,執行完workdir後,後續執行的run、cmd、entrypoint都會在此目錄下執行。
格式為copy
複製本地主機的到容器中的
,目標路徑不存在時,會自動建立。
當使用本地目錄為源目錄時,推薦使用copy。
推薦格式為cmd ["executable","param1","param2"]
作為entrypoint的預設引數為cmd["param1","param2"]
指定容器的啟動命令,每個dockerfile只能有一條cmd命令,如果指定多條,只有最後一條會執行。
使用者啟動容器時指定執行命令,會覆蓋掉dockerfile中的cmd命令。
格式為entrypoint ["executable","param1","param2"]
配置容器啟動後的命令,可被docker run提供的--entrypoint
引數覆蓋。
每個dockerfile只能有一條entrypoint命令,如果指定多條,只有最後一條會執行。
每個dockerfile的指令可以生成新的一層映象,如果通過dockerfile建立映象出錯,可以根據出錯所在步驟的上一層啟動容器,然後手工執行出錯層的命令,以達到除錯目的。
建議好好研讀下面兩篇文章,有比較詳細的例子可以參考:
docker學習 centos安裝docker
1.更新yum源 yum update2.安裝依賴 3.設定yum源 使用ustc,也可以使用阿里雲的 yum config manager add repo4.安裝docker yum install y docker ce通過docker v檢視,如果檢視到版本號,說明安裝成功 5.設定ustc...
Docker學習筆記(七)Stacks
stack其實就是相互關聯的一組service,一般地,應用的所有service就放在乙個stack裡,通過.yml檔案就可以一鍵完成應用部署,當然更複雜的應用可能會service拆分到多個stack中。在前面的筆記中。我們部署了單個service的stack,這節的demo在這個stack裡部署更...
Docker學習筆記(七) 私有倉庫
1 拉取私有倉庫映象 docker pull registry 2 啟動私有倉庫容器 docker run id name registry p 5000 5000 registry 3 開啟瀏覽器 輸入位址http 私有倉庫伺服器ip 5000 v2 catalog,看到 表示私有倉庫 搭建成功 ...