詳解Dockerfile基本語法
Dockerfile 是一個用來構建映象的文字檔案,文字內容包含了一條條構建映象所需的指令和說明。 |
基礎映象資訊
維護者資訊
映象操作指令
容器啟動時執行指令
格式為FROM <image>或者FROM <image>:<tag>
第一條指令必須為FROM指令。並且,如果在同一個Dockerfile中建立多個映象時,可以使用多個FROM指令(每個映象一次)
示例:
FROM centos:6.6
格式為MAINTAINER ,指定維護者資訊
示例:
MAINTAINER Breeze Yan<yan_ruo_gu@163.com>
格式為RUN或者RUN ["executable","param1","param2"]
前者將在
終端中執行
,即/bin/sh -c;後者使用exec執行。每條RUN指令將在當前映象基礎上執行指定
,並提交為新的映象。當命令較長時,可以使用\來換行。
示例:
RUN ["/bin/bash", "-c","echo hello"] CMD 支援三種格式: CMD ["executable","param1","param2"] #使用exec執行,推薦的方式 CMD command param1 param2 #在/bin/sh中執行,提供給需要互動的應用 CMD ["param1","param2"] #提供給ENTRYPOINT的預設引數
指定啟動視窗時執行的命令,每個Dockerfile只能有一條CMD命令。如果指定了多條,只有最後一條會被執行。如果使用者啟動容器時指定了執行的命令,則會覆蓋掉CMD指定的命令
示例:
CMD ["supervisord","-c","/etc/supervisord.conf"]
格式為EXPOSE [...]
告訴docker容器暴露的埠,供互聯絡統使用。在啟動容器時需要透過-P,docker主機會自動分配 一個埠轉發到指定的埠,使用-p,則可以具體指定哪個本地埠對映過來。
示例:
EXPOSE 22 80
格式為ENV
指定一個環境變數,會被後續RUN指令使用,並在容器執行時保持
示例:
ENV TZ "Asia/Shanghai" ENV TERM xterm
格式為ADD
該命令將複製指定的到容器中的。其中可以是dockerfile所在目錄的一個相對路徑(檔案或目錄),也可以是一個URL,還可以是一個tar檔案(自動解壓為目錄)
示例:
ADD aliyun-mirror.repo /etc/yum.repos.d/CentOS-Base.repo ADD aliyun-epel.repo /etc/yum.repos.d/epel.repo
格式為COPY
與ADD類似,複製本地主機的為容器中的,目標路徑不存在時,會自動建立。當使用本地目錄為源目錄時,推薦使用COPY
格式: ENTRYPOINT ["executable","param1","param2"] ENTRYPOINT command param1 param2 (shell中執行)
與CMD類似,配置容器啟動後執行的命令,但不會被docker run 提供的引數覆蓋。每個dockerfile只能有一個ENTRYPOINT,如果指定了多個,只有最後一個被執行
格式為VOLUME ["/data"]
建立一個掛載點,類似於容器啟動時使用的-v選項,只不過這裡不能指定掛載到宿主機的位置。預設為/var/lib/docker/vfs目錄下。一般用來存放資料庫和需要保持的資料。
格式為 USER daemon
指定執行容器時的使用者名稱或UID,後續的RUN也會使用指定使用者。當服務不需要管理員許可權時,可以透過該命令指定執行使用者。並且可以在之前建立所需要的使用者。要臨時獲取管理員許可權時可以使用gosu。
格式為WORKDIR /path/to/workdir
為後續的RUN、CMD、ENTRYPOINT指令配置工作目錄。可以使用多個WORKDIR指令,後續命令如果引數是相對路徑,則會基於之前命令指定的路徑。
示例:
# 最終路徑為/a/b/c WORKDIR /a WORKDIR b WORKDIR c
格式為ONBUILD [INSTRUTION]
配置當所建立的映象作為其它新建立映象的基礎映象時,所執行的操作指令。
例如dockerfile使用如下內容建立了映象A:
... ONBUILD ADD . /app/src ONBUILD RUN /usr/local/bin/python-build --dir /app/src ...
如果基於映象A建立新的映象時,新的dockerfile使用FROM A指定基礎映象時,會自動執行ONBUILD指令內容,等價於在後面新增了兩條指令。
ADD . /app/src RUN /usr/local/bin/python-build --dir /app/src
使用ONBUILD指令的映象,推薦在標籤中註明,如:ruby:1.9-onbuild
#mysoft/centos:6.6為新生成的映象的標籤,/tmp/dockerfile/centos6為dockerfile所在路徑。
docker build -t mysoft/centos:6.6 /tmp/dockerfile/centos6
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2699680/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Dart語言詳解(二)——基本語法Dart
- dockerfile 語法Docker
- Dockerfile詳解Docker
- Dockerfile指令詳解Docker
- Dockerfile 命令詳解Docker
- dockerfile語法小解說(二)Docker
- Markdown語法詳解
- smali語法詳解
- [一、基本語法]1基本語法概述
- docker容器dockerfile詳解Docker
- Dockerfile檔案詳解Docker
- Dockerfile中指令詳解Docker
- sed命令語法詳解
- jQuery 的語法詳解jQuery
- Java語法糖詳解Java
- Hive sql語法詳解HiveSQL
- 詳解中括號語法及點語法
- 一文學會Dockerfile語法Docker
- Dockerfile - 引數與詳解Docker
- Apache Dolphin Scheduler - Dockerfile 詳解ApacheDocker
- Dockerfile檔案全面詳解Docker
- Docker(三):Dockerfile 命令詳解Docker
- es6語法詳解
- Azure Terraform(二)語法詳解ORM
- nginx與location語法詳解Nginx
- Markdown基本語法
- Java基本語法Java
- shell基本語法
- TCP基本語法TCP
- mysql基本語法MySql
- lua~基本語法
- Markdown 基本語法
- JSP基本語法JS
- PHP基本語法PHP
- Python 基本語法Python
- React基本語法React
- Redux基本語法Redux
- javascript基本語法JavaScript