『現學現忘』Docker基礎 — 40、發布鏡像到Docker Hub

1、準備工作

Docker Hub地址://hub.docker.com/

(1)註冊用戶:

image

說明:

  • 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)驗證用戶:

之後去我們的郵箱進行驗證:

image

感謝加入Docker。完成註冊,請點擊下面的按鈕來驗證您的帳戶。

點擊:Verify email address:驗證電子郵件。

之後會跳轉到如下介面:

image

提示您:驗證成功!請使用您的憑據登錄。

之後Docker會再給你發送一封郵件,內容為:恭喜您,您的帳戶已被驗證,歡迎訪問Docker。

然後我們就可以用上邊註冊的用戶名密碼進行登陸了。

(3)登陸Docker Hub

image

登陸Docker Hub,會在右上角顯示當前用戶名稱。

image

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很簡單,只需要兩步:

  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最新。
  • 這樣不僅能保存最新版本的鏡像,也能保存歷史版本的鏡像,方便新版本鏡像出問題時進行版本回溯。