昨天在最後推送映像檔時遇到了權限的問題,今天就來手把手帶大家把映像檔推到 DockerHub 吧!
用終端機登入 DockerHub
接著我們使用 docker login
這個指令,並輸入你的使用者名稱以及 DockerHub 的密碼
$ docker login
Username: robeeerto
Password: 輸入 DockerHub 的密碼
Login Succeeded
也有可能你會遇到下面的問題,若是沒有遇到的人可以直接跳到推送映像檔的部分。
$ docker login
Username: robeeerto
Password: 輸入 DockerHub 的密碼
Error response from daemon: Get "https://registry-1.docker.io/v2/": unauthorized: please use personal access token to login
叫你去申請個人的 Token 來進行登入,這時候我們打開 DockerHub 點擊大頭貼並進入 Account Setting。
接著點擊左手邊的 Security 的選項,會看到畫面中有 New Access Token 的按鈕,點擊下去。
接著填入對於這個 Token 的描述,這邊我填入的是 MyMacBook。
點擊下 Generate 之後,畫面會有順序的告知你該如何在終端機登入 DockerHub。
接著照著步驟在終端機依序輸入:
$ docker login -u robeeerto
Password: # 貼上產生的 Token
Login Succeeded
Logging in with your password grants your terminal complete access to your account.
For better security, log in with a limited-privilege personal access token. Learn more at https://docs.docker.com/go/access-tokens/
這時候我們就成功利用 CLI 登入了 DockerHub,終於可以來試試看推送映像檔了。
$ docker image push robeeerto/nginx:latest
The push refers to repository [docker.io/robeeerto/nginx]
b539cf60d7bb: Mounted from library/nginx
bdc7a32279cc: Mounted from library/nginx
f91d0987b144: Mounted from library/nginx
3a89c8160a43: Mounted from library/nginx
e3257a399753: Mounted from library/nginx
92a4e8a3140f: Mounted from library/postgres
latest: digest: sha256:f26fbadb0acab4a21ecb4e337a326907e61fbec3... size: 1570
這邊可以注意到 Mounted from library/nginx
這段訊息,這個意思代表的是我們現在推上去的這個映像檔,雖然不存在 robeeerto 的儲存庫中,但在整個 DockerHub 內是有一模一樣的映像檔存在。
所以從 DockerHub 從另一個儲存庫 library/nginx
分享了映像檔給我們,這樣做可以大幅度的減少 DockerHub 在儲存映像檔的容量問題,同時也能加快推送的速度。
還透露了另外一個訊息就是官方映像檔並非沒有前綴,而是不顯示而已,這邊我們不就清楚的看到前綴是 library 了嗎?也代表它們隸屬於 library 這個儲存庫。
接著回到自己 DockerHub 的個人頁面,應該會看到剛剛推送上來的映像檔。
大功告成拉!成功地出現在 DockerHub 了!
結語
今天我們把映像檔成功地推送到了 DockerHub,明天我們將來介紹映像檔的全名,或許和你想得不太一樣!