基礎鏡像有:1、應用鏡像(nginx、redis、mongo、mysql、httpd、php、tomcat等);2、編程語言鏡像(node、oraclejdk、openjdk、python、golang等);3、空白鏡像“scratch”。
本教程操作環(huán)境:linux5.9.8系統、docker-1.13.1版、Dell G3電腦。
Docker基礎鏡像是什么
我們通常會以一個鏡像為基礎,在其上進行定制,這就是基礎鏡像。
就像運行了一個 nginx
鏡像的容器,再進行修改一樣。在DockerFile中基礎鏡像是必須指定的 (FROM 就是指定 基礎鏡像,因此一個 Dockerfile 中 FROM 是必備的指令,并且必須是第一條指令)
比如構建一個Java應用的鏡像,選擇一個Oracle JDK的鏡像作為基礎鏡像比選擇一個alpine鏡像作為基礎鏡像更方便。
Docker基礎鏡像都有哪些
在 Docker Hub 上有非常多的高質量的官方鏡像,可以在其中尋找一個最符合我們最終目標的鏡像為基礎鏡像進行定制。
有應用鏡像,如 nginx
、redis
、mongo
、mysql
、httpd
、php
、tomcat
等;
有方便開發(fā)、構建、運行各種語言應用的編程語言鏡像,如 node
、oraclejdk
,openjdk
、python
、ruby
、golang
等。
還有更為基礎的操作系統鏡像,如 ubuntu
、debian
、centos
、fedora
、alpine
等,這些操作系統的軟件庫為我們提供了更廣闊的擴展空間。
除了選擇現有鏡像為基礎鏡像外,Docker 還存在一個特殊的鏡像,名為 scratch
。這個鏡像是虛擬的概念,并不實際存在,它表示一個空白的鏡像。
如果你在DockerFIle中以 scratch
為基礎鏡像的話(FROM scratch
),意味著你不以任何鏡像為基礎,接下來所寫的指令將作為鏡像第一層開始存在。不以任何系統為基礎,直接將可執(zhí)行文件復制進鏡像的做法并不罕見,比如 swarm
、coreos/etcd
。對于 Linux 下靜態(tài)編譯的程序來說,并不需要有操作系統提供運行時支持,所需的一切庫都已經在可執(zhí)行文件里了,因此直接 FROM scratch
會讓鏡像體積更加小巧。使用 Go 語言 開發(fā)的應用很多會使用這種方式來制作鏡像,這也是為什么有人認為 Go 是特別適合容器微服務架構的語言的原因之一。
推薦學習:《docker視頻教程》