摘要:我們?cè)谑褂脴?gòu)建鏡像時(shí),一種方式是使用官方預(yù)先配置好的容器鏡像。基于這個(gè)名為的鏡像啟動(dòng)一個(gè)新的容器看到首頁(yè),說(shuō)明這個(gè)新構(gòu)建的鏡像工作正常。
我們?cè)谑褂肈ockerfile構(gòu)建docker鏡像時(shí),一種方式是使用官方預(yù)先配置好的容器鏡像。優(yōu)點(diǎn)是我們不用從頭開始構(gòu)建,節(jié)省了很多工作量,但付出的代價(jià)是需要下載很大的鏡像包。
比如我機(jī)器上docker images返回的這些基于nginx的鏡像,每個(gè)都超過(guò)了100MB,而一個(gè)簡(jiǎn)單的Ubuntu的容器超過(guò)了200MB,如果安裝了相關(guān)的軟件,尺寸會(huì)更大。
如果我們的需求是在構(gòu)建一個(gè)符合我們實(shí)際業(yè)務(wù)需求的Docker鏡像的前提下,確保鏡像尺寸盡可能的小,應(yīng)該怎么做呢?
思路是使用空鏡像scratch。
新建一個(gè)文件夾,用wget下載rootfs.tar.xz壓縮包。
wget -O rootfs.tar.xz https://github.com/debuerreotype/docker-debian-artifacts/raw/b024a792c752a5c6ccc422152ab0fd7197ae8860/jessie/rootfs.tar.xz
這個(gè)將近30MB的壓縮包是個(gè)什么東東?
解壓之后看內(nèi)容就知道了,包含了操作系統(tǒng)大部分常用命令。
wget -O nginx.conf https://github.wdf.sap.corp/raw/slvi/docker-k8s-training/master/docker/res/nginx.conf
新建一個(gè)dockerfile文件,將下列內(nèi)容粘貼進(jìn)去:
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í)行命令進(jìn)行鏡像的構(gòu)建:
docker build -t nginx-from-scratch1.0 .
產(chǎn)生的日志:
最后看到鏡像成功構(gòu)建的消息。
基于這個(gè)名為nginx-from-scratch的鏡像啟動(dòng)一個(gè)新的nginx容器:
localhost:1083, 看到首頁(yè),說(shuō)明這個(gè)新構(gòu)建的鏡像工作正常。
要獲取更多Jerry的原創(chuàng)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙":
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/27596.html
摘要:為此我首先需要?jiǎng)?chuàng)建一個(gè)針對(duì)的配置文件。的作用是指定基準(zhǔn)鏡像。該以后面指定的鏡像為基礎(chǔ),在其上進(jìn)行定制。存在一個(gè)特殊的鏡像,名為。它是一個(gè)虛擬的概念,表示一個(gè)空白的鏡像。直接使用會(huì)讓鏡像體積更加小巧。 什么是dockerfile?簡(jiǎn)單的說(shuō)就是一個(gè)文本格式的腳本文件,其內(nèi)包含了一條條的指令(Instruction),每一條指令負(fù)責(zé)描述鏡像的當(dāng)前層(Layer)如何構(gòu)建。 下面通過(guò)一個(gè)具體的...
摘要:以下為幾個(gè)常用的指令依賴鏡像所有都必須以命令開始,表示其依賴的鏡像。的端口不使用公有端口。與命令使用數(shù)組語(yǔ)法。推薦阿里云,畢竟有錢,穩(wěn)定。參數(shù)表示后臺(tái)守護(hù)進(jìn)程運(yùn)行容器。執(zhí)行,運(yùn)行應(yīng)用。 docker 即容器 一些概念 Docker Registry Docker 遠(yuǎn)程鏡像倉(cāng)庫(kù) DockerHub DaoCloud / Aliyun Docker Images Docker Imag...
摘要:我一直在尋找盡可能小的容器入手,并且發(fā)現(xiàn)了一個(gè)鏡像是完美的,真正的完美它簡(jiǎn)潔,小巧以及快速。所以這可能就是最小的鏡像。盡管如此,這樣看起來(lái)會(huì)很復(fù)雜并且導(dǎo)致容器很大。 注:本文由 Adriaan de Jonge 編寫,本文的原文地址為 Create The Smallest Possible Docker Container 當(dāng)我們?cè)谑褂?Docker 的時(shí)候,你會(huì)很快注意到...
摘要:將應(yīng)用部署到項(xiàng)目地址快上車,支持一波原文地址注開始前你需要安裝好,配好鏡像源本章節(jié)源碼在分支上從本章節(jié)開始項(xiàng)目目錄都以為基準(zhǔn)請(qǐng)配合自己本地項(xiàng)目靈活變動(dòng)介紹在這里簡(jiǎn)單介紹下,建議深入學(xué)習(xí)是一個(gè)開源的輕量級(jí)容器技術(shù),讓開發(fā)者可以打包他們 將Golang應(yīng)用部署到Docker 項(xiàng)目地址:https://github.com/EDDYCJY/go... (快上車,支持一波)原文地址:https...
閱讀 2645·2021-09-13 10:26
閱讀 1907·2021-09-03 10:28
閱讀 1977·2019-08-30 15:44
閱讀 794·2019-08-29 14:07
閱讀 386·2019-08-29 13:12
閱讀 2144·2019-08-26 11:44
閱讀 2337·2019-08-26 11:36
閱讀 2003·2019-08-26 10:19