在你要執行(新建)一個容器的時候,你就需要有映像檔。映像檔是一個模版,讓 docker 知道要基於怎樣的設定和內容來建立一個新容器。
docker 在建立容器時,會需要在本地端有對應的映像檔。如果沒有的話,會向遠端的映像檔倉庫來下載 ( 預設值為官方維護的 docker hub )。
使用 docker pull
指令。下方例子是從遠端拉取 nginx 映像檔。
docker pull nginx
#Using default tag: latest
#latest: Pulling from library/nginx
#a330b6cecb98: Pull complete
#5ef80e6f29b5: Pull complete
#f699b0db74e3: Pull complete
#0f701a34c55e: Pull complete
#3229dce7b89c: Pull complete
#ddb78cb2d047: Pull complete
#Digest: sha256:a05b0cdd4fc1be3b224ba9662ebdf98fe44c09c0c9215b45f84344c12867002e
#Status: Downloaded newer image for nginx:latest
#docker.io/library/nginx:latest
此命令相當於 sudo docker pull registry.hub.docker.com/nginx
,在沒有特別標註版號的狀況下,會遇上抓取 tag 為 latest 的,也就是最新版本。
抓取下來後,就可以使用 docker run 來建立容器了。
在移除前,要先確定所有依賴於該映像檔的容器都已被移除,才能正常刪除映像檔囉。
指令為:sudo docker rmi <container id / name>
可以使用 docker images
指令
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 822b7ec2aaf2 43 hours ago 133MB
REPOSITORY:代表映像檔的倉庫來源
TAG: 主要是用來標記同一個倉庫下,不同版本的映像檔
IMAGE ID:映像檔 ID,此值會是唯一值
CREATED:此映像檔的建立時間
SIZE:映像檔大小
先從 Docker hub 下載一個映像檔後,建立一個容器,並進行一些操作。
docker run -t -i training/sinatra /bin/bash
root@13fb70bb49f0: gem install json -v 1.5
# 在容器內安裝 json 1.5 的套件版本後,使用 exit 離開容器
接著,按照以下指令來建立新映像檔:
<格式>:
docker commit -m <此映像檔的修改相關訊息> -a <指定更新的使用者訊息> <用來當做模版的容器 ID> <新的映像檔名稱>
sudo docker commit -m "Added json-1.5 gem" -a "Docker Beginner" 13fb70bb49f0 andy/sinatra:v2
# 成功的話,會出現 sha256 的字串
#sha256:8ddf1108bed9fb487a867f798928161552ad373c4a5a0e0fa7a7839e4db01dfc
再輸入 docker images,你就會看見新建立的映像檔了。
docker images
#REPOSITORY TAG IMAGE ID CREATED SIZE
#andy/sinatra v2 8ddf1108bed9 9 seconds ago 473MB