Docker 入門:鏡像 image

主要內容:

  • 什麼是鏡像
  • 下載鏡像 pull
  • 設置下載加速源
  • 查看鏡像
  • 上傳鏡像 push

📀 什麼是鏡像(image)

鏡像是一個文件系統,提供了容器運行時需要用到的文件和參數配置。相當於平時在使用某個軟件時需要下載的安裝包,也相當於安裝操作系統時需要用到 ISO 文件。

我們可以基於某一個鏡像創建多個容器。

https://i.loli.net/2020/05/26/LotWA4hYCOcjRlr.png
https://i.loli.net/2020/05/26/LotWA4hYCOcjRlr.png

📥下載鏡像

如果想運行某個 Docker 容器,可以直接從 Docker Hub 中下載對應的鏡像,然後通過鏡像創建容器就可以了。Docker Hub 類似於 GitHub,你可以把自己寫好的鏡像放到上面託管,需要用的時候再下載下來。

https://imgkr.cn-bj.ufileos.com/8401b62d-6548-4722-a548-85d8627920c0.jpg
https://imgkr.cn-bj.ufileos.com/8401b62d-6548-4722-a548-85d8627920c0.jpg

下載鏡像需要執行 docker image pull 命令,是不是和 git 指令很像? 在 DockerHub 上,點擊進入詳情頁,可以看到很多下載標籤,可以根據標籤下載指定的版本。

https://imgkr.cn-bj.ufileos.com/dee429a8-b590-426d-863d-1634e3344791.jpg
https://imgkr.cn-bj.ufileos.com/dee429a8-b590-426d-863d-1634e3344791.jpg

下載 utuntu 14.04, 也可以點擊標籤進入 Dockerfile 查看具體信息。

docker image pull utuntu:14.04

utuntu 的鏡像就會下載下來

https://imgkr.cn-bj.ufileos.com/062aec10-2846-4598-bb81-49811ecc2bfa.jpg
https://imgkr.cn-bj.ufileos.com/062aec10-2846-4598-bb81-49811ecc2bfa.jpg

下載一個鏡像以後,可以通過 docker image ls 命令查看有哪些鏡像。

https://imgkr.cn-bj.ufileos.com/719dac46-9d6b-445d-ab8f-aaec67fc0c16.jpg
https://imgkr.cn-bj.ufileos.com/719dac46-9d6b-445d-ab8f-aaec67fc0c16.jpg

然後通過鏡像就可以創建容器運行了:

docker container run ubuntu:14.04
# 或者通過 image id
docker container run 6e4f1fe62ff1

🚀設置國內源

國內下載官方源下載速度會比較慢,有時候等得讓人想哭,所以最好設置一個國內源地址。

鏡像加速地址提供幾個參考,現在用的是 163 的:

在 docker toolbox 中配置國內源:

# 登錄 host  
$ docker-machine ssh default 

# 添加國內源地址
$ sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=[http://hub-mirror.c.163.com](http://hub-mirror.c.163.com/) |g" \
/var/lib/boot2docker/profile 

# 退出機器
exit 

# 重啓 host
$ docker-machine restart default

或者修改 /etc/docker/daemon.json 文件(沒驗證):

# vi /etc/docker/daemon.json
{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

🔍查看 image 詳情

可以通過 inspect 指令查看 image 的詳細信息。比如開放了哪些端口,設置了哪些環境變量,最終運行的是什麼命令。

docker container inspect image_id

查看 image 的構建歷史:

docker image history utuntu:14.04
# 或者 docker image history image_id

每一行代表的是一個層級 layer, 可以看到 image 是如何構建的, missing 表示中間層,也就是在構建最終的 image 時產生的臨時 image。

https://imgkr.cn-bj.ufileos.com/c0a1a5c5-7d4f-4658-b987-0a7752526d40.jpg
https://imgkr.cn-bj.ufileos.com/c0a1a5c5-7d4f-4658-b987-0a7752526d40.jpg

也就是說,在製作成一個 image 之前,會有很多的步驟,而每做一個步驟,都會產生一層。最終會合並所有的中間步驟,得到會使用的 image。

https://imgkr.cn-bj.ufileos.com/5cee9dc6-23ee-473d-9108-9a9777ecb0bd.jpg
https://imgkr.cn-bj.ufileos.com/5cee9dc6-23ee-473d-9108-9a9777ecb0bd.jpg

📤上傳 image

上傳 image 首先需要給本地的 image 製作遠程標籤

docker image tag python:3.7-alpine looker53/python:3.7-alpine
# 也可以用 image id
docker image tag e854017db514 looker53/python:3.7-alpine

這裏表示把本地的 python 鏡像,標籤爲 3.7-alpine 設置成 looker53 這個用戶的 python 鏡像,標籤也叫 3.7-alpine,也可以設成其他名字。

登陸 looker53 這個賬號:

docker login

然後通過 push 命令推送到遠程倉庫:

docker image push looker53/python:37alpine

接着,在 DockerHub 當中就可以看到推送的倉庫了:

https://imgkr.cn-bj.ufileos.com/fe6e6d66-1cf0-409b-b0f5-b2e04f9dcb4c.jpg
https://imgkr.cn-bj.ufileos.com/fe6e6d66-1cf0-409b-b0f5-b2e04f9dcb4c.jpg
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章