『現學現忘』Docker基礎 — 40、發布鏡像到Docker Hub
- 2022 年 6 月 28 日
- 筆記
- 高級測試技能 - Docker基礎
1、準備工作
Docker Hub地址://hub.docker.com/
(1)註冊用戶:
說明:
Sign In
:登陸,已有賬戶,點擊這裡進行登陸。Sign Up
:註冊,沒有賬戶,點擊這裡進行註冊。Get Started Today for Free
:立刻免費開始。Already have an account? Sign In
:已經有帳號了? 登入。Send me occasional product updates and announcements.
:給我發送產品更新和公告。- 進行人機身份驗證:這個選項必須勾選。
By creating an account, you agree to the Terms of Service, Privacy. Poligy, and Data Processing Terms.
:創建帳戶即表示您同意「服務條款,隱私」。 政策和數據處理條款。
上面的解釋已經很清楚了,我們直接填寫用戶名、郵箱、密碼,勾選進行人機身份驗證,最後點擊Sign Up
即可。
(2)驗證用戶:
之後去我們的郵箱進行驗證:
感謝加入Docker。完成註冊,請點擊下面的按鈕來驗證您的帳戶。
點擊:Verify email address
:驗證電子郵件。
之後會跳轉到如下介面:
提示您:驗證成功!請使用您的憑據登錄。
之後Docker會再給你發送一封郵件,內容為:恭喜您,您的帳戶已被驗證,歡迎訪問Docker。
然後我們就可以用上邊註冊的用戶名密碼進行登陸了。
(3)登陸Docker Hub
登陸Docker Hub,會在右上角顯示當前用戶名稱。
2、Docker登陸命令
登陸命令:docker login
[root@192 tomcatlogs]# docker login --help
Usage: docker login [OPTIONS] [SERVER]
Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.
Options:
-p, --password string Password
--password-stdin Take the password from stdin
-u, --username string Username
演示:
# 用戶名或密碼錯誤
[root@192 ~]# docker login -u xxxxx6688
Password:
Error response from daemon: Get //registry-1.docker.io/v2/: unauthorized: incorrect username or password
# 登陸成功
[root@192 ~]# docker login -u xxxxx6688
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
//docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
登錄完畢後就可以提交鏡像了。
說明:
- docker login : 登陸到一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,默認為官方倉庫 Docker Hub
- docker logout : 登出一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,默認為官方倉庫 Docker Hub
登出示例:
[root@192 ~]# docker logout
Removing login credentials for //index.docker.io/v1/
3、Docker提交命令
提交命令:docker pull 鏡像名:TAG
[root@192 tomcatlogs]# docker push --help
Usage: docker push [OPTIONS] NAME[:TAG]
Push an image or a repository to a registry
Options:
-a, --all-tags Push all tagged images in the repository
--disable-content-trust Skip image signing (default true)
-q, --quiet Suppress verbose output
示例:
# 查看本地Docker鏡像
[root@192 ~]# clear
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
diytomcat9 latest 12988584a30e 14 hours ago 607MB
centos latest 300e315adb2f 3 months ago 209MB
# 把diytomcat9鏡像發布到Docker Hub
[root@192 ~]# docker push diytomcat9
Using default tag: latest
The push refers to repository [docker.io/library/diytomcat9]
b4ef62e90bac: Preparing
5da8b73f85d7: Preparing
68a0171f3cc4: Preparing
76f4ae6e5125: Preparing
2653d992f4ef: Preparing
可以看到,向遠程倉庫推送鏡像的時候,也是按照鏡像的層級來進行推送的。
提示:我看網上說有用
docker push 註冊用戶名/鏡像名:TAG
來進行提交,親測不用加用戶名。
4、總結:
發布鏡像到Docker Hub很簡單,只需要兩步:
docker login
:登陸Docker Hub。docker push
:發布鏡像到Docker Hub。
5、補充:docker tag命令
作用貌似是,修改本地鏡像名稱和版本號,其實是給鏡像打標記。
使用命令:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
作用:給本地鏡像打一個標記(tag
),可將其歸入某一倉庫。
演示:
# 查看本地Docker鏡像
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
diytomcat9 latest 12988584a30e 14 hours ago 607MB
centos latest 300e315adb2f 3 months ago 209MB
# 給diytomcat9鏡像打tag標記
[root@192 ~]# docker tag 12988584a30e wukong/tomcat9:1.8
# 再次查看本地Docker鏡像
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
diytomcat9 latest 12988584a30e 14 hours ago 607MB
wukong/tomcat9 1.8 12988584a30e 14 hours ago 607MB
centos latest 300e315adb2f 3 months ago 209MB
提示:鏡像打了新的TAG,雖然會多了一條鏡像記錄,但是從IMAGE ID可以得知他們是同一個鏡像。
實際使用場景:
- 當鏡像配置到一定程度時,想打個
tag
進行記錄當前版本,可以打個V1
。 - 再次更新鏡像時,又可以打個
V2
。 - 當是最新版本待上傳時,可以不打默認就是
latest
最新。 - 這樣不僅能保存最新版本的鏡像,也能保存歷史版本的鏡像,方便新版本鏡像出問題時進行版本回溯。