05docker倉庫---搭建本地倉庫

Docker倉庫docker

倉庫(Repository)是集中存放鏡像的地方,分別公有倉庫和私有倉庫.shell

註冊服務器是存放倉庫的具體服務器。一個註冊服務器上能夠有多個倉庫,每個倉庫裏面能夠有多個鏡像。json

eg:倉庫地址private-docker. com/ubuntu來講,private-docker.com是註冊服務器地址,ubuntu是倉庫名。ubuntu

1:https://hub.docker.com/ 公共鏡像倉庫windows

2:登陸:docker logincentos

註冊登陸後:會在本地家目錄建立一個 .docker/config.json ,保存用戶的認證信息。安全

2:搜索官方倉庫中的鏡像服務器

ubuntu@ubuntu:~$ docker search  centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   5674                [OK]                
ansible/centos7-ansible            Ansible on Centos7                              125                                     [OK]

3:搭建本地私有倉庫curl

私有倉庫,也就是在本地(局域網)搭建的一個相似公共倉庫的東西,搭建好以後,咱們能夠將鏡像提交到私有倉庫中。測試

環境

準備兩臺安裝好docker的服務器redhat7:
服務端機器 (主機名爲registry):docker私有倉庫服務器,運行registry容器;
測試端機器 (主機名爲docker):普通的docker服務器,在這臺服務器上下載一個測試鏡像busybox,而後上傳到registry服務器進行測試

3.1:部署(registry服務端操做)

1:下載鏡像registry

[root@registry ~]# docker search registry
NAME                                 DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
registry                             The Docker Registry 2.0 implementation for s…   2758                [OK]                
distribution/registry                WARNING: NOT the registry official image!!! …   58                                      [OK]
stefanscherer/registry-windows       Containerized docker registry for Windows Se…   27                                      

[root@registry ~]# [root@registry ~]# docker pull registry   
[root@registry ~]# docker images   #查看pull下來的鏡像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
registry            latest              f32a97de94e1        8 months ago        25.8MB

2:運行容器
[root@registry ~]# docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
4c98ff5d1023632154914e5e5d5d77b08fda702095ae769b5728ff7463fa2d65
#-itd:在容器中打開一個僞終端進行交互操做,並在後臺運行;
# -v:把宿主機的/data/registry目錄綁定 到 容器/var/lib/registry目錄(這個目錄是registry容器中存放鏡像文件的目錄),來實現數據的持久化;
# -p:映射端口;訪問宿主機的5000端口就訪問到registry容器的服務了;
#--restart=always:這是重啓的策略,假如這個容器異常退出會自動重啓容器;
# --name registry:建立容器命名爲registry,至關於別名

3:測試鏡像倉庫中全部的鏡像

[root@registry ~]#  curl http://192.168.1.20:5000/v2/_catalog 
{"repositories":[]}    #表示

#192.168.1.20是registry的主機IP

3.2:測試:docker 測試機上操做

1:修改鏡像源頭並重啓docker服務
[root@docker ~]# cat  /etc/docker/daemon.json         
{"registry-mirrors": 
["https://5f2jam6c.mirror.aliyuncs.com", 
"http://hub-mirror.c.163.com"]
}

[root@docker ~]# systemctl restart docker  #重啓docker服務

2:下載busybox鏡像
[root@docker ~]# docker pull busybox
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              020584afccce        2 weeks ago         1.22MB

3:爲鏡像打上標籤
[root@docker ~]# docker tag busybox:latest  192.168.1.20:5000/busybox:v1
#192.168.1.20:5000/busybox:v1   是registry私有鏡像服務器的IP地址和端口;

#查看鏡像
[root@docker ~]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
192.168.1.20:5000/busybox   v1                  020584afccce        2 weeks ago         1.22MB
busybox                     latest              020584afccce        2 weeks ago         1.22MB


4:上傳到鏡像服務器
[root@docker ~]# docker push 192.168.1.20:5000/busybox:v1   
The push refers to repository [192.168.1.20:5000/busybox]
Get https://192.168.1.20:5000/v2/: http: server gave HTTP response to HTTPS client
#這裏是報錯了,docker鏡像倉庫暫不支持https,由於Docker與Docker Registry交互默認使用https,然而此處搭建的Docker Registry只提供http服務,因此當和Registry私有倉庫交互時會失敗,爲了解決這個問題須要在啓動Docker時配置Registry不安全選項

# 修改/etc/docker/daemon.json

[root@docker ~]# cat  /etc/docker/daemon.json 
{"registry-mirrors":
["https://5f2jam6c.mirror.aliyuncs.com",
"http://hub-mirror.c.163.com"],
"insecure-registries": [ "192.168.1.20:5000"]   #添加這一行,192.168.1.20爲registry的ip
}

[root@docker ~]# systemctl  restart docker    #重啓docker服務
[root@docker ~]# docker push 192.168.1.20:5000/busybox:v1
The push refers to repository [192.168.1.20:5000/busybox]
1da8e4c8d307: Pushed 
v1: digest: sha256:679b1c1058c1f2dc59a3ee70eed986a88811c0205c8ceea57cec5f22d2c3fbb1 size: 527


5:測試下載鏡像
[root@docker ~]# docker rmi $(docker images -aq) -f   #刪除全部鏡像
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE


#從registry服務器上下載busybox鏡像
[root@docker ~]# docker pull 192.168.1.20:5000/busybox:v1    
v1: Pulling from busybox
0f8c40e1270f: Pull complete 
Digest: sha256:679b1c1058c1f2dc59a3ee70eed986a88811c0205c8ceea57cec5f22d2c3fbb1
Status: Downloaded newer image for 192.168.1.20:5000/busybox:v1
192.168.1.20:5000/busybox:v1

5:列出registry的全部鏡像
[root@docker ~]# curl  http://192.168.1.20:5000/v2/_catalog
{"repositories":["busybox"]}

6:列出busybox鏡像有哪些tag
[root@docker ~]# curl  http://192.168.1.20:5000/v2/busybox/tags/list
{"name":"busybox","tags":["v1"]}
相關文章
相關標籤/搜索