摘要:我們在使用構(gòu)建鏡像時,一種方式是使用官方預(yù)先配置好的容器鏡像。基于這個名為的鏡像啟動一個新的容器看到首頁,說明這個新構(gòu)建的鏡像工作正常。
我們在使用Dockerfile構(gòu)建docker鏡像時,一種方式是使用官方預(yù)先配置好的容器鏡像。優(yōu)點是我們不用從頭開始構(gòu)建,節(jié)省了很多工作量,但付出的代價是需要下載很大的鏡像包。
比如我機器上docker images返回的這些基于nginx的鏡像,每個都超過了100MB,而一個簡單的Ubuntu的容器超過了200MB,如果安裝了相關(guān)的軟件,尺寸會更大。
如果我們的需求是在構(gòu)建一個符合我們實際業(yè)務(wù)需求的Docker鏡像的前提下,確保鏡像尺寸盡可能的小,應(yīng)該怎么做呢?
思路是使用空鏡像scratch。
新建一個文件夾,用wget下載rootfs.tar.xz壓縮包。
wget -O rootfs.tar.xz https://github.com/debuerreotype/docker-debian-artifacts/raw/b024a792c752a5c6ccc422152ab0fd7197ae8860/jessie/rootfs.tar.xz
這個將近30MB的壓縮包是個什么東東?
解壓之后看內(nèi)容就知道了,包含了操作系統(tǒng)大部分常用命令。
wget -O nginx.conf https://github.wdf.sap.corp/raw/slvi/docker-k8s-training/master/docker/res/nginx.conf
新建一個dockerfile文件,將下列內(nèi)容粘貼進去:
FROM scratch # set the environment to honour SAP"s proxy servers ENV http_proxy http://sap.corp:8080 ENV https_proxy http://sap.corp:8080 ENV no_proxy .sap.corp # give yourself some credit LABEL maintainer="Jerry Wang" # add and unpack an archive that contains a Debian root filesystem ADD rootfs.tar.xz / # use the apt-get package manager to install nginx and wget RUN apt-get update && apt-get -y install nginx wget # use wget to download a custom website into the image RUN wget --no-check-certificate -O /usr/share/nginx/html/cheers.jpg https://github.wdf.sap.corp/raw/slvi/docker-k8s-training/master/docker/res/cheers.jpg && wget --no-check-certificate -O /usr/share/nginx/html/index.html https://github.wdf.sap.corp/raw/slvi/docker-k8s-training/master/docker/res/cheers.html # copy the custom nginx configuration into the image COPY nginx.conf /etc/nginx/nginx.conf # link nginx log files to Docker log collection facility RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log # expose port 80 - the standard port for webservers EXPOSE 80 # and make sure that nginx runs when a container is created CMD ["nginx", "-g", "daemon off;"]
執(zhí)行命令進行鏡像的構(gòu)建:
docker build -t nginx-from-scratch1.0 .
產(chǎn)生的日志:
最后看到鏡像成功構(gòu)建的消息。
基于這個名為nginx-from-scratch的鏡像啟動一個新的nginx容器:
localhost:1083, 看到首頁,說明這個新構(gòu)建的鏡像工作正常。
要獲取更多Jerry的原創(chuàng)文章,請關(guān)注公眾號"汪子熙":
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27596.html
摘要:為此我首先需要創(chuàng)建一個針對的配置文件。的作用是指定基準鏡像。該以后面指定的鏡像為基礎(chǔ),在其上進行定制。存在一個特殊的鏡像,名為。它是一個虛擬的概念,表示一個空白的鏡像。直接使用會讓鏡像體積更加小巧。 什么是dockerfile?簡單的說就是一個文本格式的腳本文件,其內(nèi)包含了一條條的指令(Instruction),每一條指令負責(zé)描述鏡像的當前層(Layer)如何構(gòu)建。 下面通過一個具體的...
摘要:以下為幾個常用的指令依賴鏡像所有都必須以命令開始,表示其依賴的鏡像。的端口不使用公有端口。與命令使用數(shù)組語法。推薦阿里云,畢竟有錢,穩(wěn)定。參數(shù)表示后臺守護進程運行容器。執(zhí)行,運行應(yīng)用。 docker 即容器 一些概念 Docker Registry Docker 遠程鏡像倉庫 DockerHub DaoCloud / Aliyun Docker Images Docker Imag...
摘要:我一直在尋找盡可能小的容器入手,并且發(fā)現(xiàn)了一個鏡像是完美的,真正的完美它簡潔,小巧以及快速。所以這可能就是最小的鏡像。盡管如此,這樣看起來會很復(fù)雜并且導(dǎo)致容器很大。 注:本文由 Adriaan de Jonge 編寫,本文的原文地址為 Create The Smallest Possible Docker Container 當我們在使用 Docker 的時候,你會很快注意到...
摘要:將應(yīng)用部署到項目地址快上車,支持一波原文地址注開始前你需要安裝好,配好鏡像源本章節(jié)源碼在分支上從本章節(jié)開始項目目錄都以為基準請配合自己本地項目靈活變動介紹在這里簡單介紹下,建議深入學(xué)習(xí)是一個開源的輕量級容器技術(shù),讓開發(fā)者可以打包他們 將Golang應(yīng)用部署到Docker 項目地址:https://github.com/EDDYCJY/go... (快上車,支持一波)原文地址:https...
閱讀 2658·2021-09-13 10:26
閱讀 1915·2021-09-03 10:28
閱讀 1991·2019-08-30 15:44
閱讀 808·2019-08-29 14:07
閱讀 397·2019-08-29 13:12
閱讀 2154·2019-08-26 11:44
閱讀 2346·2019-08-26 11:36
閱讀 2015·2019-08-26 10:19