1. 程式人生 > >Dockerfile建立Docker映象

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命