本地編譯好鏡像之後,需要分發給其它人使用構建鏡像,docker提供了三種方式分發構建好的鏡像:
(1)、上傳到公共 registry,例如docker hub、阿里雲的docker鏡像等
(2)、導出tar鏡像包,在其它host上導入鏡像
(3)、上傳到私有庫,例如docker registry 或者 Harbor 本文將分別介紹這幾種分發鏡像的方式。
本文將利用在 dockerfile構建一個簡單的springboot應用鏡像 中創建的鏡像
1、使用公共Registry
1.1 使用docker hub
docker hub是docker的官方倉庫。在docker hub裏,需要區分是哪個用戶創建的鏡像,鏡像的格式爲:[username]/鏡像名:tag。前面創建了一個鏡像名爲springboot-docker的鏡像,明顯不符合鏡像格式。所以,需要通過使用docker tag命令給原有鏡像做一個別名 thinwonton/springboot-docker ,前面一段是在docker hub的用戶名。
[root@localhost springboot-docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
springboot-docker 1.0 de46a3f96d91 23 hours ago 121MB
thinwonton/springboot-docker 1.0 de46a3f96d91 23 hours ago 121MB
首先需要在docker hub註冊用戶,然後利用login命令登錄docker hub。thinwonton是我的賬戶
[root@localhost springboot-docker]# docker login -u thinwonton
Password:
Login Succeeded
接下來,我們需要上傳的鏡像,需要修改爲格式 [username]/鏡像名:tag。
使用push命令上傳鏡像
[root@localhost springboot-docker]# docker push thinwonton/springboot-docker:1.0
The push refers to repository [docker.io/thinwonton/springboot-docker]
e16d1e52c41b: Pushed
0e09c652764f: Pushed
ed6f0bd39121: Mounted from library/openjdk
0c3170905795: Mounted from library/openjdk
df64d3292fd6: Mounted from library/openjdk
1.0: digest: sha256:384ce38ddb3c65e642f0f860ab4f54fba521118ee1aeaf35b427b5e61cfa2aee size: 1366
OK,上傳完畢,到網站自己的倉庫中看下
這樣子,就可以從docker hub上拉取鏡像了。由於是公有鏡像,所以人人都可以使用,要私有就得交錢羅
docker pull thinwonton/springboot-docker:1.0
1.2 使用阿里雲
創建命名空間
鏈接:https://cr.console.aliyun.com/cn-shenzhen/namespaces
點擊命名空間管理,創建命名空間。命名空間是一組倉庫的集合,應以公司、組織或團隊等命名,不建議使用系統名稱進行命名。
這裏創建了一個命名空間:thinwonton,設置爲公有庫,如果設置爲私有庫,可以通過授權可訪問的用戶
創建鏡像倉庫
鏈接:https://cr.console.aliyun.com/cn-shenzhen/repositories
點擊鏡像列表右上角的創建鏡像倉庫,一個鏡像倉庫就對應一個鏡像。
和docker hub一樣,阿里雲的docker倉庫也要區分用戶的鏡像,但是規則有少許不同,鏡像名的規則在下面可以瞭解。
=========================================================================
選擇本地倉庫
創建完倉庫後,可以在倉庫的基本信息裏面獲取到倉庫的公網地址和鏡像倉庫的操作步驟
Ok,完成上面的步驟後,我們開始往這個鏡像倉庫推送上面的 thinwonton/springboot-docker:1.0 鏡像
首先,需要用 docker login 命令登錄阿里雲,我賬戶的個人情況如下
sudo docker login --username=thinwonton registry.cn-shenzhen.aliyuncs.com
然後,給springboot-docker鏡像建立別名
docker tag de46a3f96d91 registry.cn-shenzhen.aliyuncs.com/thinwonton/springboot-docker:1.0
看一下剛纔創建的鏡像別名
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
thinwonton/springboot-docker 1.0 de46a3f96d91 2 days ago 121MB
registry.cn-shenzhen.aliyuncs.com/thinwonton/springboot-docker 1.0 de46a3f96d91 2 days ago 121MB
springboot-docker 1.0 de46a3f96d91 2 days ago 121MB
開始推送鏡像
[root@localhost ~]# docker push registry.cn-shenzhen.aliyuncs.com/thinwonton/springboot-docker:1.0
The push refers to repository [registry.cn-shenzhen.aliyuncs.com/thinwonton/springboot-docker]
e16d1e52c41b: Pushed
0e09c652764f: Pushed
ed6f0bd39121: Pushed
0c3170905795: Pushed
df64d3292fd6: Pushed
1.0: digest: sha256:384ce38ddb3c65e642f0f860ab4f54fba521118ee1aeaf35b427b5e61cfa2aee size: 1366
在頁面上看下推送上來的鏡像
從阿里雲拉取剛纔創建的鏡像,拉取之前需要刪除了本地的相關鏡像。
[root@localhost ~]# docker pull registry.cn-shenzhen.aliyuncs.com/thinwonton/springboot-docker:1.0
1.0: Pulling from thinwonton/springboot-docker
4fe2ade4980c: Already exists
6fc58a8d4ae4: Already exists
ef87ded15917: Already exists
8c74a3771fe2: Pull complete
4030283f89db: Pull complete
Digest: sha256:384ce38ddb3c65e642f0f860ab4f54fba521118ee1aeaf35b427b5e61cfa2aee
Status: Downloaded newer image for registry.cn-shenzhen.aliyuncs.com/thinwonton/springboot-docker:1.0
退出阿里雲的登錄
docker logout registry.cn-shenzhen.aliyuncs.com
2、使用導入/導出鏡像的方式
我們可以導出鏡像保存在文件上,然後拷貝鏡像文件到需要安裝該鏡像的機器,然後利用導入命令把鏡像導進本地docker倉庫中
鏡像導入命令
docker save -o /home/springboot-docker.tar springboot-docker:1.0
/home/springboot-docker.tar 是鏡像導出路徑在哪
springboot-docker:1.0 是本地鏡像的名字和tag
鏡像導入命令
docker load -i /home/springboot-docker.tar
3、使用私有registry
有時候公司內部建立的docker鏡像只對公司內部人員開發,這時需要自己搭建私有鏡像倉庫。
開源界有名氣的倉庫有兩個:docker registry 和 Harbor,由於我們公司使用Harbor搭建私有庫,所以下面將介紹Harbor的使用方法。
等我寫好Harbor的搭建再寫下面部分