Docker鏡像的首行從FROM alpine之類的鏡像開始,可是最初的基礎鏡像是如何建立的,本文使用一個busybox建立一個基礎鏡像,相信在此過程當中會對docker一些相關的概念有進一步的理解。linux
簡單來講,基礎鏡像就是沒有From或者FROM scratch開頭的Dockerfile所構建出來的鏡像。好比alpine,這個很小的linux鏡像目前只有4M左右web
由於Docker鏡像是基於基礎鏡像來構建的,所以選擇的基礎鏡像越高級,咱們要作的底層工做就越少。docker
好比,若是構建一個Java應用的鏡像,選擇一個openjdk的鏡像做爲基礎鏡像比選擇一個alpine鏡像做爲基礎鏡像要簡單地多。ubuntu
Docker鏡像官網(Docker Hub): https://hub.docker.comcentos
阿里雲容器Hub:https://dev.aliyun.combash
Google鏡像(gcr.io):https://console.cloud.google.com/gcr/images/google-containers/GLOBAL (主要爲Kubernetes相關鏡像)編輯器
好比你要從Linux操做系統基礎鏡像開始構建,能夠參考下表來選擇合適的基礎鏡像:測試
鏡像名稱 | 大小 | 使用場景 |
---|---|---|
busybox | 1.15MB | 臨時測試用 |
alpine | 4.41MB | 主要用於測試,也可用於生產環境 |
centos | 200MB | 主要用於生產環境,支持CentOS/Red |
ubuntu | 81.1MB | 主要用於生產環境,經常使用於人工智能計算和企業應用 |
debian | 101MB | 主要用於生產環境 |
使用命令 docker build ,來建立一個新的鏡像。所以咱們須要建立一個 Dockerfile 文件,其中包含一組指令來告訴 Docker 如何構建咱們的鏡像。 咱們能夠根據需求選擇合適的基礎鏡像來構建咱們須要的鏡像文件ui
FROM centos:6.7
WORK test ADD . . EXPOSE 8080 CMD ['test'] 複製代碼
docker exec -it test_image /bin/shgoogle
docker exec -it test_image bash
docker exec -it test_image sh