Dockerfile建立Docker映象
Dockerfile是一個文字格式的配置檔案,使用者可以使用Dockerfile快速建立自定義的映象。
一、Dockerfile基本結構
Dockerfile由一行行命令語句組成,並且支援以#開頭的註釋行。
一般而言,Dockerfile分為 四部分
- 基礎映象資訊
- 維護者資訊
- 映象操作指令
- 容器啟動時執行指令
(1)Dockerfile之Nginx示例
在centos父映象基礎上安裝nginx、apache2、openssh-server
# Nginx
# 第一行必須指定基於的映象基礎
FROM centos
# 維護者資訊
MAINTAINER hongxue [email protected]
# 映象的操作指令
RUN yum -y install nginx apache2 openssh-server
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
(2)Dockerfile之firefox和vnc示例
在centos父映象基礎上,安裝firefox和vnc軟體,啟動後,使用者可以通過5900埠通過vnc方式使用firefox
# Firefox over VNC
FROM centos
# Install vnc,xvfb in order to create a 'fake' display and firefox
RUN yum -y install x11vnc xvfb firefox
RUN mkdir /.vnc
# Setup a password
RUN x11vnc -storepasswd hahaha ~/.vnc/passwd
#Autostart firefox (might not be the best way, but it does the trick)
RUN bash -c 'echo "firefox" >> /.bashrc'
EXPOSE 5900
CMD ["x11vnc","-forever","-usepw","-create"]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
二、指令
指令的一般格式為INSTRUCTION arguments,指令包括FROM、MAINTAINER、RUN等
(1) FROM
格式為:
FROM <image> 或 FROM <image>:<tag>
- 1
- 2
第一條指令必須為FROM指令。並且,如果在同一個Dockerfile中建立多個映象時,以使用多個FROM指令(每個映象一次)
(2) MAINTAINER
格式為:
MAINTAINER <name>
- 1
- 2
指定維護著資訊
(3) RUN
格式為:
RUN <command>
RUN ["executable","param1","param2"]
- 1
- 2
- 3
前者將在shell終端中執行命令,即/bin/sh -c;後者則使用exec執行。指定使用其他終端可以通過第二種方式實現,例如RUN [“/bin/bash”, “-c”,”echo hello”]
每條RUN指令將在當前映象基礎上執行指定命令,並提交為新的映象。
(4) CMD
支援三種格式:
CMD ["executable","param1","param2"]使用exec執行,推薦方式。
CMD command param1 prarm2 在/bin/sh中執行,提供給需要互動的應用
CMD ["prarm1","param2"]提供給ENTRYPOINT的預設引數
- 1
- 2
- 3
- 4
指定啟動容器時執行的命令,每個Dockerfile只能有一條CMD命令。如果指定了多條命令,只有最後一條會被執行。
如果使用者啟動容器的時候指定了執行的命令,則會覆蓋掉CMD指定的命令。
(5) EXPOSE
格式為:
EXPOSE <port> [<port>...]
例如:
EXPOSE 20 80 8443
- 1
- 2
- 3
- 4
告訴Docker伺服器容器暴露的埠號,供互聯絡統使用。在啟動容器時需要通過-P,Docker主機會自動分配一個埠轉發到指定的埠;使用-p,則可以具體指定哪個本地埠對映過來。
(6) ENV
格式為:
ENV <key> <value>
指定一個環境變數,會被後續RUN指令使用,並在容器執行時保持
- 1
- 2
- 3
(7) ADD
格式為:
ADD <src> <dest>
- 1
- 2
該命令將複製指定’src’的到容器中的’dest’。其中’src’可以是Dockerfile所在目錄的一個相對路徑(檔案或目錄);也可以是一個URL;還可以是一個tar檔案
(8) COPY
格式為:
COPY <src> <dest>
- 1
- 2
複製本地主機的’src’為容器中的’dest’,目標路徑不存在時,會自動建立。
當使用本地目錄為源目錄時,推薦使用COPY
(9) ENTRYPOINT
有兩種格式:
ENTRYPOINT ["executable","param1","param2"]
ENTRYPOING command param1 param2 (shell中執行)
- 1
- 2
- 3
配置容器啟動後執行的命令,並且不可被docker run 提供的引數覆蓋。
每個Dockerfile中只能有一個ENTRYPOINT,當指定多個ENTRYPOINT時,只有最後一個生效。
(10) VOLUME
格式為:
VOLUME ["/data"]
- 1
- 2
建立一個可以從本地主機或其他容器掛載的掛載點,一般用來存放資料庫和需要保持的資料等。
(11) USER
格式為:
USER daemon
- 1
- 2
指定執行容器時的使用者名稱或UID,後續的RUN也會使用指定使用者
當服務不需要管理員許可權時,可以通過該命令指定執行使用者。並且可以在之前建立所需要的使用者,例如:
RUN groupadd -r postgres && useradd -r -g postgres postgres
(12) WORKDIR
格式為:
WORKDIR /path/to/workdir
- 1
- 2
為後續的RUN、CMD、ENTRYPOINT指令配置工作目錄
可以使用多個WORKDIR指令,後續命令如果引數是相對路徑,則會基於之前命令指定的路徑。
(13) ONBUILD
格式為:
ONBUILD [INSTRUCTION]
- 1
- 2
配置當所建立的映象作為其他新建立映象的基礎映象時,所執行的操作指令
三、建立映象
編寫完成Dockerfile之後,可以通過docker build命令來建立映象。
基本的格式為 docker build [選項]路徑,該命令將讀取指定路徑下的Dockerfile,並將該路徑下的所有內容傳送給Docker服務端,由服務端來建立映象。因此一般建議放置Dockerfile的目錄為空目錄
(1) 檢視目錄下Dockerfile是否存在
[root@docker ~]#cd /Dockerfile/
[root@docker Dockerfile]#ls
Dockerfile
(2) 執行命令進行構建
[root@docker Dockerfile]#docker build -t nginx_image .
上條命令中build為構建映象,而引數t則指定映象name,.則為Dockerfile的路徑
下圖可以看到構建成功
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
相關推薦
使用Dockerfile建立Docker映象
原文地址:https://renguangli.com/articles/docker-dockerfile 以下是Dockerfile常用指令的簡單介紹。 Dockerfile常用指令 FROM FROM指定基礎映象,若映象不存在Docker會從docke
Dockerfile建立Docker映象
Dockerfile是一個文字格式的配置檔案,使用者可以使用Dockerfile快速建立自定義的映象。一、Dockerfile基本結構 Dockerfile由一行行命令語句組成,並且支援以#開頭的註釋行。 一般而言,Dockerfile分為 四部分基礎映象資訊維護者資訊映象操
Docker學習筆記(三)- Dockerfile建立本地映象
Dockerfile建立本地映象 本博文將會介紹在docker中,如何建立本地映象。內容包括,編寫Dockerfile檔案,從編寫的Dockerfile建立映象,映象建立的過程解析,執行所建立的映象。 Dockerfile是用來建立自定義的im
Docker第四篇-Dockerfile製作Docker映象
文章目錄 製作簡單Mysql映象 Dockerfile命令說明 總結 這一篇主要介紹Dockerfile命令的使用說明及如何使用Dockerfile製作簡單映象 製作簡單Mysql映象 建立目錄 mkdir /tmp/mysql
使用Dockerfile定製docker映象
Docker Store上已經有很多官方的映象我們可以直接使用,但是有時候我們的環境和映象會有些許差異,在pull之後還需要做一些變更,如果是團隊開發那操作起來就略顯繁瑣,如果能實現映象的定製那就很方便了。 定製映象有兩種方式一種是從容器commit生成映象,但是這種操作生成的映象體積會比較
Centos7使用Dockerfile建立apache映象和容器
Dockerfile # Version 0.1 # 基礎映象 FROM centos:latest # 維護者資訊 MAINTAINER [email protected] #啟動apache服務 RUN yum -y install httpd RU
區域網搭建hadoop平臺——基於基礎映象通過Dockerfile建立Hadoop映象
建立一個base.repo檔案 在window機器上建立一個檔案base.repo,檔案包含內容如下: [base] name=RedHat baseurl=http://172.17.0.2/RedHat gpgcheck=1 gpgkey=http://172.17
建立docker映象的兩種方式
1. docker commit方式 檢查一下已有映象和容器 docker images docker container ls 這裡我們選擇對centos進行自定義映象 互動式執行centos容器 docker run -i
centos7.4下Dockerfile建立nginx映象並生成容器這樣做解決所有錯誤!!!
實驗環境:192.168.80.185 (www.ae.com)https://download.openvz.org/template/precreated/ //去公網環境下載基礎映象centos--------建立nginx映象:前提要有centos
使用Dockerfile製作Docker映象
最近專案中使用到Docker,因此趁在週末時間,研究下Docker。Docker環境安裝之前已經安裝就緒,請參考:《在Centos中安裝Docker CE》。我們從簡單的開始,使用Dockerfile製作一個能執行Java應用程式的Docker映象 1、準備J
使用Dockerfile建立javaweb映象
一、在centos映象上進行操作1.在宿主機的一個目錄下建立檔案Dockerfile,如:/root/static_web,並在該目錄下放專案的war包。Dockerfile的內容:FROM centos:latestMAINTAINER panjqWORKDIR /home
自定義Dockerfile建立tomcat映象
由於在docker hub上pull下來的官方tomcat映象中,tomcat採用的時間格式為UTC格式,並且webapps目錄存放了預設專案,tomcat也沒有設定相關的JAVA_OPTS引數(JAVA_OPTS一般是要自己根據機器效能進行最優設定)。 因此
基於Dockerfile構建docker映象實踐_Kubernetes中文社群
1、Dockerfile檔案和核心指令 在Kubernetes中執行容器的前提是已存在構建好的映象檔案,而通過Dockerfile檔案構建映象是最好方式。Dockerfile是一個文字檔案,在此檔案中的可以設定各種指令,以通過docker build命令自動構建出需要的映象。Dockerfil
Kubernetes-基於Dockerfile構建docker映象最佳實踐
1、Dockerfile檔案和核心指令在Kubernetes中執行容器的前提是已存在構建好的映象檔案,而通過Dockerfile檔案構建映象是最好方式。Dockerfile是一個文字檔案,在此檔案中的可以設定各種指令,以通過docker build命令自動構建出需要的映象。D
Dockerfile建立容器映象
開發十年,就只剩下這套架構體系了! >>>
vue 專案建立docker映象和啟動
Linux 命令: cd /opt/code npm install -g @vue/cli vue create vue-fir
Spring Boot 建立 Docker 映象
隨著越來越多的組織轉向容器和虛擬伺服器,Docker正成為軟體開發工作流程中一個更重要的部分。為此,Spring Boot 2.3中最新的功能之中,提供了為Spring Boot應用程式建立 Docker 映象的能力。 這篇文章的目的,就是為了給大家介紹如何為 Spring Boot 應用程式建立 Dock
[轉載] Dockerfile建立自定義Docker映象以及CMD與ENTRYPOINT指令的比較
1.概述 建立Docker映象的方式有三種 docker commit命令:由容器生成映象; Dockerfile檔案+docker build命令; 從本地檔案系統匯入:OpenVZ的模板。 最近學習了Dockerfile檔案的相關配置,這裡做一下簡單的
[轉]Docker基礎-使用Dockerfile建立映象
本文轉自:https://www.cnblogs.com/jie-fang/p/7927643.html 1、基本結構 Dockerfile由一行行命令語句組成,並支援以#開頭的註釋行。例如: # This dockerfile uses the ubuntu image #
Docker實踐(六):建立本地映象(commit、Dockerfile)
通常我們自己製作映象都是以某一映象為基礎,在此之上安裝或者定製自己需要的映象,推薦使用Dockerfile。 一、commit命令建立本地映象 這邊我們準備在centos為基礎的映象上,安裝jdk,並建立一個txt檔案,然後使用commit命