『現學現忘』Docker基礎 — 40、釋出映象到Docker Hub

2022-06-28 12:00:26

1、準備工作

Docker Hub地址:https://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 https://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
https://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 https://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很簡單,只需要兩步:

  1. docker login:登陸Docker Hub。
  2. 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最新。
  • 這樣不僅能儲存最新版本的映象,也能儲存歷史版本的映象,方便新版本映象出問題時進行版本回溯。