Docker 倉庫之單機 Docker Registry

在公司規模較小的狀況下咱們能夠經過docker官方倉庫的方式來進行構建。nginx

Docker Registry 做爲 Docker 的核心組件之一負責鏡像內容的存儲與分發,客戶端的 docker pull 以及 push 命令都將直接與 registry 進行交互,最第一版本的 registry 由Python 實現,因爲設計初期在安全性,性能以及API 的設計上有着諸多的缺陷, 該版本在 0.9 以後中止了開發,由新的項目 distribution(新的 docker register 被稱爲 Distribution)來從新設計並開發下一代 registry,新的項目由 go 語言開發, 全部的 API,底層存儲方式,系統架構都進行了全面的從新設計已解決上一代registry 中存在的問題,2016 年 4 月份 rgistry 2.0 正式發佈,docker 1.6 版本開始支持 registry 2.0,而八月份隨着 docker 1.8 發佈,docker hub 正式啓用 2.1 版本registry 全面替代以前版本 registry,新版 registry 對鏡像存儲格式進行了從新設計並和舊版不兼容,docker 1.5 和以前的版本沒法讀取 2.0 的鏡像,另外,Registryweb

2.4 版本以後支持了回收站機制,也就是能夠刪除鏡像了,在 2.4 版本以前是沒法支持刪除鏡像的,因此若是你要使用最好是大於 Registry 2.4 版本的。docker

本部分將介紹經過官方提供的 docker registry 鏡像來簡單搭建一套本地私有倉庫環境。json

6.1.1 Docker Registry倉庫服務器配置:

6.1.1.1 在docker服務器上下載並運行鏡像倉庫鏡像
在咱們的docker服務器上配置咱們的鏡像倉庫地址ubuntu

下載鏡像倉庫鏡像

[14:34:27 root@docker ~]#docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always registry
​
docker run:                             #運行起來
-d:                                     #後臺運行
-v  /opt/registry:/var/lib/registry:    #邏輯卷掛載
-p 5000:5000:                           #將容器的端口映射到宿主機上(docker 默認走的是443端口)
--restart=always:                       #開機自啓
registry:                               #鏡像名

6.1.1.3 運行成功以後咱們還要作一些其餘設置
在/etc/docker/daemon.json配置,這個至關於咱們的第二個主配置文件,這個文件中寫了一些配置也會加載到主配置文件中進行生效,在這裏咱們受權一下倉庫鏡像地址和端口vim

在這裏插入圖片描述

一、編寫配置文件配置鏡像倉庫地址瀏覽器

[14:58:19 root@docker ~]#vim /etc/docker/daemon.json 
​
{
      "insecure-registries":["10.0.0.117:5000"]                                                                              
}
​
10.0.0.117:5000:            #指定咱們的鏡像倉庫IP和端口
​

二、重啓docker服務使其生效
[14:40:34 root@docker ~]#systemctl restart docker
​
三、經過docker ps -a 查看正在運行的鏡像,就會發現鏡像倉庫容器已經運行
[14:40:41 root@docker ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                    NAMES
c38f9be5a45d        registry            "/entrypoint.sh /e..."   9 minutes ago       Up 10 seconds                 0.0.0.0:5000->5000/tcp   stupefied_liskov

6.1.1.4 上傳鏡像至鏡像倉庫

6.1.1.4.1 查看已有鏡像
上傳的話很是容易,首先咱們須要去對已經存在的鏡像打補丁操做安全

先查看已經存在的鏡像、這裏有一個nginx的鏡像

[14:11:33 root@docker ~]#docker images 
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
nginx-1.19.1                  ubuntu-18.04        f2a267dc97aa        44 hours ago        382 MB

6.1.1.4.2 修改鏡像名格式
想要上傳至倉庫的話必須知足這個格式:倉庫地址/驗證過用戶名/鏡像名:版本號知足這一個格式以後才能實現被上傳。因此咱們須要對這個nginx鏡像作一個修改服務器

一、修改鏡像名架構

#修改鏡像名格式
[14:42:37 root@docker ~]#docker tag nginx-1.19.1:ubuntu-18.04 10.0.0.117:5000/ubuntu-18.04-nginx-1.19.1:v1
​
docker tag:                                     #修改鏡像名
nginx-1.19.1:ubuntu-18.04:                      #原鏡像
10.0.0.117:5000/nginx-1.19.1:ubuntu-18.04:      #修改後鏡像名

二、查看已經修改爲功

[15:01:49 root@docker ~]#docker images 
REPOSITORY                                  TAG                 IMAGE ID            CREATED             SIZE
10.0.0.117:5000/ubuntu-18.04-nginx-1.19.1   v1     
             f2a267dc97aa        44 hours ago        382 MB

由於在官方鏡像倉庫裏沒有認證也沒有受權,因此驗證過的用戶省略便可

6.1.1.4.3 上傳鏡像至咱們的10.0.0.7鏡像倉庫服務器

[14:58:01 root@docker ~]#docker push 10.0.0.117:5000/ubuntu-18.04-nginx-1.19.1:v1

在這裏插入圖片描述

6.1.1.5 查看鏡像已上傳
一、經過下面的這條命令能夠查看到咱們已經上傳的鏡像

[15:01:52 root@docker ~]#curl -XGET http://10.0.0.117:5000/v2/_catalog
{"repositories":["ubuntu-18.04-nginx-1.19.1"]}

6.1.2 客戶端演示拉取nginx鏡像

6.1.2.1 客戶端受權操做
若是不給客戶端受權的話一樣沒有辦法,對咱們的10.0.0.117鏡像倉庫進行認證,由於官方的端口是443而咱們在倉庫服務器上配置的地址是5000因此須要修改配置文件

一、配置鏡像倉庫地址

[15:19:06 root@A7 ~]#vim /etc/docker/daemon.json 
{
          "insecure-registries":["10.0.0.117:5000"]                                                                          
}
​
10.0.0.117:5000             #指定倉庫地址和5000端口

二、在A7客戶端上重啓docker

[15:19:32 root@A7 ~]#systemctl restart docker
三、在A7客戶端主機上下載剛纔咱們在倉庫服務器端上傳的nginx鏡像。

[15:20:42 root@A7 ~]#docker pull 10.0.0.117:5000/ubuntu-18.04-nginx-1.19.1:v1

在這裏插入圖片描述

四、經過查看鏡像、咱們的nginx鏡像已經下載至當前A7服務器上。

[15:22:00 root@A7 ~]#docker images 
REPOSITORY                                  TAG                 IMAGE ID            CREATED             SIZE
10.0.0.117:5000/ubuntu-18.04-nginx-1.19.1   v1                  f2a267dc97aa        45 hours ago        382 MB

6.1.2.2 經過運行驗證當前鏡像是否可用

一、啓動容器

[15:24:08 root@A7 ~]#docker run -it -d --name nginx -p 80:80 10.0.0.117:5000/ubuntu-18.04-nginx-1.19.1:v1 nginx
​
docker run:             #啓動容器
-it:                    #對容器執行命令
-d:                     #放到後臺運行
--name nginx:           #啓動的容器名爲nginx
-p 80:80:               #將容器的80端口映射到宿主機的80端口
10.0.0.117:5000/ubuntu-18.04-nginx-1.19.1:v1:       #使用的鏡像名
nginx                   #在容器啓動的時候執行nginx操做

二、瀏覽器訪問驗證。

http://10.0.0.7/webserver/
在這裏插入圖片描述

更多文章和資料|點擊下方文字直達 ↓↓↓
阿里雲K8s實戰手冊
[阿里雲CDN排坑指南]CDN
ECS運維指南
DevOps實踐手冊
Hadoop大數據實戰手冊
Knative雲原生應用開發指南
OSS 運維實戰手冊

相關文章
相關標籤/搜索