從頭基於空映象scratch建立一個新的Docker映象
我們在使用Dockerfile構建docker映象時,一種方式是使用官方預先配置好的容器映象。優點是我們不用從頭開始構建,節省了很多工作量,但付出的代價是需要下載很大的映象包。
比如我機器上docker images返回的這些基於nginx的映象,每個都超過了100MB,而一個簡單的Ubuntu的容器超過了200MB,如果安裝了相關的軟體,尺寸會更大。
如果我們的需求是在構建一個符合我們實際業務需求的Docker映象的前提下,確保映象尺寸儘可能的小,應該怎麼做呢?
思路是使用空映象scratch。
新建一個資料夾,用wget下載rootfs.tar.xz壓縮包。
wget -O rootfs.tar.xz https://github.com/debuerreotype/docker-debian-artifacts/raw/b024a792c752a5c6ccc422152ab0fd7197ae8860/jessie/rootfs.tar.xz
這個將近30MB的壓縮包是個什麼東東?
解壓之後看內容就知道了,包含了作業系統大部分常用命令。
wget -O nginx.conf https://github.wdf.sap.corp/raw/slvi/docker-k8s-training/master/docker/res/nginx.conf
新建一個dockerfile檔案,將下列內容貼上進去:
FROM scratch# set the environment to honour SAP's proxy serversENV http_proxy http://sap.corp:8080 ENV https_proxy http://sap.corp:8080 ENV no_proxy .sap.corp# give yourself some creditLABEL maintainer="Jerry Wang"# add and unpack an archive that contains a Debian root filesystemADD rootfs.tar.xz /# use the apt-get package manager to install nginx and wgetRUN apt-get update && \ apt-get -y install nginx wget# use wget to download a custom website into the imageRUN 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 imageCOPY nginx.conf /etc/nginx/nginx.conf# link nginx log files to Docker log collection facilityRUN 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 webserversEXPOSE 80# and make sure that nginx runs when a container is createdCMD ["nginx", "-g", "daemon off;"]
執行命令進行映象的構建:
docker build -t nginx-from-scratch1.0 .
產生的日誌:
最後看到映象成功構建的訊息。
基於這個名為nginx-from-scratch的映象啟動一個新的nginx容器:
localhost:1083, 看到首頁,說明這個新構建的映象工作正常。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2221882/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- docker建立beego映象DockerGo
- 建立基於Java 11的SpringBoot Docker映象到48M!JavaSpring BootDocker
- docker2-映象原理及建立新的映象Docker
- 基於cloudflare workers自建docker映象CloudDocker
- docker 映象建立與使用Docker
- Spring Boot 建立 Docker 映象Spring BootDocker
- 基於Spring Boot 2.3以上版本方便建立分層Docker映象Spring BootDocker
- 基於 Docker 映象部署 go 專案DockerGo
- 一個基於 Ubuntu16.04 的多功能映象Ubuntu
- 生產中的NLP:建立Docker映象Docker
- Docker初體驗,建立並匯出第一個本地映象Docker
- 關於Docker加速映象Docker
- 建立映象釋出到映象倉庫【不依賴docker環境】Docker
- 基於Alpine和Ubuntu的Docker映象修改時區UbuntuDocker
- 建立 Docker 映象倉庫指令碼Docker指令碼
- 細述docker容器建立MariaDB映象Docker
- 基於ubuntu映象構建redis映象UbuntuRedis
- Linux檢查Docker映象,容器的磁碟空間LinuxDocker
- Docker筆記(五):整一個自己的映象Docker筆記
- Docker框架使用系列教程(六)建立映象Docker框架
- docker 映象Docker
- docker通過commit命令提交一個映象DockerMIT
- docker 映象的一次瘦身Docker
- 記一個 Docker 映象無法執行的坑Docker
- Docker_03 映象-基礎操作Docker
- Docker - 02 建立映象 Dockerfile 指令速查表Docker
- Docker框架使用系列教程(七)Dockerfile映象建立Docker框架
- 從0開始構建一個瀚高資料庫Docker映象資料庫Docker
- 基於url-to-pdf-api構建docker映象,製作一個網頁另存服務APIDocker網頁
- Docker筆記一之映象Docker筆記
- 聊聊Docker映象Docker
- Docker私有映象Docker
- Docker 映象源Docker
- docker 映象加速Docker
- yamlapi docker 映象YAMLAPIDocker
- 自己最近搭建的一個docker映象站,分享給大家!Docker
- 構建 Docker 映象的 N 個小技巧Docker
- Docker映象的基本操作Docker