Dockerfile建立容器映象
檔名必須為Dockerfile
--Dockerfile是一個文字格式的配置檔案,使用者可以使用Dockerfile快速建立自定義映象
基礎映象、維護者資訊、操作指令、容器CMD
注:cmd 和entrypoint 告訴映象啟動時做什麼
dockerfile指令
FROM:
FROM {base映象}
必須放在DOckerfile的第一行,表示從哪個baseimage開始構建
MAINTAINER:
可選的,用來標識image作者的地方
RUN
RUN都是啟動一個容器、執行命令、然後提交儲存層檔案變更。
第一層 RUN command1 的執行僅僅是當前程序,一個記憶體上的變化而已,其結果不會造成任何檔案。
而到第二層的時候,啟動的是一個全新的容器,跟第一層的容器更完全沒關係,自然不可能繼承前一層構建過程中的記憶體變化。
而如果需要將兩條命令或者多條命令聯合起來執行需要加上&&。
如:cd /usr/local/src && wget xxxxxxx
CMD:
CMD的作用是作為執行container時候的預設行為(容器預設的啟動命令)
當執行container的時候聲明瞭command,則不再用image中的CMD預設所定義的命令
一個Dockerfile中只能有一個有效的CMD,當定義多個CMD的時候,只有最後一個才會起作用
EXPOSE
EXPOSE 指令是宣告執行時容器提供服務埠,這只是一個宣告,在執行時並不會因為這個宣告應用就會開啟這個埠的服務。在 Dockerfile 中寫入這樣的宣告有兩個好處,一個是幫助映象使用者理解這個映象服務的守護埠,以方便配置對映;另一個用處則是在執行時使用隨機埠對映時,也就是
entrypoint:
entrypoint的作用是,把整個container變成可執行的檔案,且不能夠通過替換CMD的方法來改變建立container的方式。但是可以通過引數傳遞的方法影響到container內部
每個Dockerfile只能夠包含一個entrypoint,多個entrypoint只有最後一個有效
當定義了entrypoint以後,CMD只能夠作為引數進行傳遞
ADD & COPY:
把host上的檔案或者目錄複製到image中(能夠進行自動解壓壓縮包)
ENV:
用來設定環境變數,後續的RUN可以使用它所建立的環境變數
WORKDIR:
用來指定當前工作目錄(或者稱為當前目錄)
USER:
執行RUN指令的使用者
VOLUME:
用來建立一個在image之外的mount point
1、最簡單的dockerfile
cd /root/dockerfile/cmd 自定義的目錄 存放dockerfile檔案
vi Dockerfile
2、建立映象
該容器啟動后里面會停掉,因為cmd(echo hello cmd! )命令執行結束
nginx映象製作實戰
編譯/安裝nginx
mkdir一個目錄,在此目錄內下載nginx原始碼包
wget http://nginx.org/download/nginx-1.13.2.tar.gz
並建立一個Dockerfile檔案,檔案內製作一系列nginx的編譯安裝流程,內容如檔案:
# base image
FROM centos
# MAINTAINER
MAINTAINER peter
# put nginx-1.13.2.tar.gz
ADD nginx-1.13.2.tar.gz /usr/local/src
# running required command
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
RUN useradd -M -s /sbin/nologin nginx
# change dir to /usr/local/src/nginx-1.13.2
WORKDIR /usr/local/src/nginx-1.13.2
# execute command to compile nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install
EXPOSE 80
WORKDIR /usr/local/src/nginx-1.13.2
相當於下邊這些命令
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install
是在cd /usr/local/src/nginx-1.13.2 (進入/usr/local/src/nginx-1.13.2 目錄)之下敲入執行的
其中,每一個RUN就是增加一個映象層檔案,一層層的RUN命令最終形成一系列映象層
進入Dockerfile目錄,執行build指令(注意最後的.代表當前路徑),製作映象
docker build -t cent-ngx2 .
我們檢視一下這個映象的層次歷史
docker images
docker history
可看到,此映象層基本與dockerfile檔案的RUN是一一對應的
使用製作的nginx映象,建立一個容器。
因此映象無前臺命令,因為必須指定啟動命令 :/usr/local/nginx/sbin/nginx -g "daemon off;"
為映象指定環境變數,掛載目錄,預設啟動命令,避免每次啟動都有輸入 /usr/local/nginx/sbin/nginx -g "daemon off;"
在上一版映象的基礎上,我們新加配置
新編寫Dockerfile檔案
ENV 環境
執行:docker build -t cent-ngx3 .
檢視映象的歷史,可看到比ngx2的映象多了幾個層
ngx3的映象建立容器,已經不需要再指定cmd命令了
可執行命令自行校驗:docker run -d --name ng2 cent-ngx3
相關推薦
Dockerfile建立容器映象
開發十年,就只剩下這套架構體系了! >>>
Centos7使用Dockerfile建立apache映象和容器
Dockerfile # Version 0.1 # 基礎映象 FROM centos:latest # 維護者資訊 MAINTAINER [email protected] #啟動apache服務 RUN yum -y install httpd RU
centos7.4下Dockerfile建立nginx映象並生成容器這樣做解決所有錯誤!!!
實驗環境:192.168.80.185 (www.ae.com)https://download.openvz.org/template/precreated/ //去公網環境下載基礎映象centos--------建立nginx映象:前提要有centos
使用Dockerfile建立Docker映象
原文地址:https://renguangli.com/articles/docker-dockerfile 以下是Dockerfile常用指令的簡單介紹。 Dockerfile常用指令 FROM FROM指定基礎映象,若映象不存在Docker會從docke
區域網搭建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學習筆記(三)- Dockerfile建立本地映象
Dockerfile建立本地映象 本博文將會介紹在docker中,如何建立本地映象。內容包括,編寫Dockerfile檔案,從編寫的Dockerfile建立映象,映象建立的過程解析,執行所建立的映象。 Dockerfile是用來建立自定義的im
使用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映象
Dockerfile是一個文字格式的配置檔案,使用者可以使用Dockerfile快速建立自定義的映象。一、Dockerfile基本結構 Dockerfile由一行行命令語句組成,並且支援以#開頭的註釋行。 一般而言,Dockerfile分為 四部分基礎映象資訊維護者資訊映象操
利用Dockerfile建立映象並生成容器
建立Dockerfile(以mysql 5.7為例) 可以從Docker Hub上下載官方Dockerfile,以及docker-entrypoint.sh 具體內容太長,還是在Docker Hu
Docker使用Dockerfile建立支援ssh服務自啟動的容器映象
1. 首先建立一個Dockerfile檔案,檔案內容如下# 選擇一個已有的os映象作為基礎 FROM centos:centos6 # 映象的作者 MAINTAINER Fanbin Kong "[email protected]" # 安裝openssh-
Docker之搭建2048遊戲,四種網路模式的學習,容器和管理,資料卷的管理,用Dockerfile建立映象
1.映象管理 物理機上: 軟體包: docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm [
使用Dockerfile建立映象(七)
Dockerfile Dockerfile是一個文字格式的配置檔案,使用者可以使用Dockerfile快速建立自定義的映象。 基本結構 Dockerfile由一行行命令語句組成,並且支援以#開頭的註釋行。 一般而言,Dockerfile分為四個部分:基礎映象資訊
使用Dockerfile建立映象
Dockerfile是一個文字格式的配置檔案 1 基本結構 dockerfile由一行行命令語句組成,以#開頭的是註釋行 主體內容分四部分: 基礎映象資訊 維護者資訊 映象操作指令 容器啟動時執行指令 2 &n
將springBoot專案打成映象並建立容器,啟動容器,訪問專案過程
1.安裝docker就不說了 2.安裝docker 的 nexus倉庫 (1)拉取私有倉庫映象 docker pull registry (2)啟動私有倉庫容器 docker run -di --name=registry -p 5000:5000 regi
dockerfile建立映象
2018-10-13 Docker 使用Dockerfile建立映象 Dockerfile 是什麼:一個文字格式的配置檔案 能做什麼:快速建立自定義映象 由哪幾部分構成: 基礎映象資訊 維護者資訊 映象操作指令 容器啟動時執行指令 舉例: # escape
[轉載] Dockerfile建立自定義Docker映象以及CMD與ENTRYPOINT指令的比較
1.概述 建立Docker映象的方式有三種 docker commit命令:由容器生成映象; Dockerfile檔案+docker build命令; 從本地檔案系統匯入:OpenVZ的模板。 最近學習了Dockerfile檔案的相關配置,這裡做一下簡單的
【centos】Dockerfile 建立pytorch程式執行環境的映象
目的:基於pytorch框架實現了一個卷積神經網路,現想建立該程式的執行映象。 程式執行所需要的環境: CUDA 8.0 cudnn 7 ffmpeg Anaconda3.4 cv2 Pytorch0.4.1 流程: 0. 我的程式在test資料夾下,因此
[轉]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命