Docker倉庫(四)


一、什么是倉庫

  倉庫就是集中存放鏡像的地方,分為公共倉庫和私有倉庫,一個容易混淆的概念是注冊服務器,實際上注冊服務器是存放倉庫的具體服務器,一個注冊服務器可以有多個倉庫,而每個倉庫下面有多個鏡像

二、使用Docker官方公共倉庫

  官方倉庫地址:DockerHub

2.1. 登錄倉庫

  使用docker login 命令來登錄官方的公共倉庫

[root@rsync131 ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: brianzjz
Password:
Login Succeeded

沒有用戶名密碼的可以去官方注冊一個

2.2. 下載鏡像

  使用docker pull 命令下載鏡像

[root@rsync131 ~]# docker pull nginx
Using default tag: latest
Trying to pull repository docker.io/library/nginx ...
latest: Pulling from docker.io/library/nginx
802b00ed6f79: Pull complete
e9d0e0ea682b: Pull complete
d8b7092b9221: Pull complete
Digest: sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d3
Status: Downloaded newer image for docker.io/nginx:latest

2.3. 推送鏡像

  使用docker push 命令推送鏡像

[root@rsync131 ~]# docker push brianzjz/nginx:v1.0
The push refers to a repository [docker.io/brianzjz/nginx]
579c75bb43c0: Mounted from library/nginx
67d3ae5dfa34: Mounted from library/nginx
8b15606a9e3e: Mounted from library/nginx
v1.0: digest: sha256:c0b69559d28fb325a64c6c8f47d14c26b95aa047312b29c699da10380e90b4d7 size: 948

三、國內第三方公共倉庫

  使用國內的倉庫就是為了能提高下載的速度:想要達到火箭的速度 請點擊:火箭加速器

四、搭建自己的本地倉庫

  這個私有倉庫才是重點,在我們的企業中很多都會是自己去定制自己的鏡像文件,有一些還必須不能對外開放的,也是能夠為了提高在內網的下載速度,這樣我們就要搭建自己的私有倉庫了

4.1. 使用registry鏡像創建私有倉庫

  安裝docker后,可以通過官方提供的registry鏡像來簡單的搭建一套本地的私有倉庫

[root@rsync131 ~]# mkdir -p /opt/data/docker/                                                  # 創建存放鏡像的目錄
[root@rsync131 ~]# docker run -it -d -p 5000:5000 -v /opt/data/docker:/tmp/registry registry   # 創建容器 -p指定端口 -v數據卷掛載
Unable to find image 'registry:latest' locally
Trying to pull repository docker.io/library/registry ...
latest: Pulling from docker.io/library/registry
d6a5679aa3cf: Pull complete
ad0eac849f8f: Pull complete
2261ba058a15: Pull complete
f296fda86f10: Pull complete
bcd4a541795b: Pull complete
Digest: sha256:5a156ff125e5a12ac7fdec2b90b7e2ae5120fa249cf62248337b6d04abc574c8
Status: Downloaded newer image for docker.io/registry:latest
6df20cdacf8d4a40ad3cbd3d310299650d41d0757b535130a0daa19f21ee1901
[root@rsync131 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
6df20cdacf8d        registry            "/entrypoint.sh /e..."   8 seconds ago       Up 7 seconds        0.0.0.0:5000->5000/tcp   dazzling_golick

 

4.2. 管理私有倉庫

  用另一台機器來測試上傳下載私有倉庫

[root@nfs133 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@nfs133 ~]# docker pull nginx
Using default tag: latest
Trying to pull repository docker.io/library/nginx ...
latest: Pulling from docker.io/library/nginx
802b00ed6f79: Pull complete
e9d0e0ea682b: Pull complete
d8b7092b9221: Pull complete
Digest: sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d3
Status: Downloaded newer image for docker.io/nginx:latest
[root@nfs133 ~]# docker tag nginx 192.168.73.131:5000/nginx_test
[root@nfs133 ~]# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
192.168.73.131:5000/nginx_test   latest              06144b287844        2 weeks ago         109 MB
docker.io/nginx                  latest              06144b287844        2 weeks ago         109 MB
=================================================
[root@nfs133 ~]# docker push 192.168.73.131:5000/nginx_test
The push refers to a repository [192.168.73.131:5000/nginx_test]
Get https://192.168.73.131:5000/v1/_ping: http: server gave HTTP response to HTTPS client

這里執行的時候報錯了,原因就是新版本的docker對安全性要求高了,會要求倉庫支持SSL/TLS證書

解決方法:
修改daemon配置文件
[root@nfs133 ~]# vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false  # 原來的配置
修改為:
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry 192.168.73.131:5000'
保存后,重啟docker
[root@nfs133 ~]# systemctl restart docker

=================================================
# 重新執行push
[root@nfs133 ~]# docker push 192.168.73.131:5000/nginx_test
The push refers to a repository [192.168.73.131:5000/nginx_test]
579c75bb43c0: Pushed
67d3ae5dfa34: Pushed
8b15606a9e3e: Pushed
latest: digest: sha256:c0b69559d28fb325a64c6c8f47d14c26b95aa047312b29c699da10380e90b4d7 size: 948


# curl 測試
# 溫馨提示:下面的執行是錯的 因為registry現在已經是2.0版本了
[root@nfs133 ~]# curl http://192.168.73.131:5000/v1/search
404 page not found

# 正確的方式
[root@nfs133 ~]# curl -X GET http://192.168.73.131:5000/v2/_catalog
{"repositories":["nginx_test"]}

# 下載私有倉庫鏡像
[root@nfs133 ~]# docker pull 192.168.73.131:5000/nginx_test
Using default tag: latest
Trying to pull repository 192.168.73.131:5000/nginx_test ...
latest: Pulling from 192.168.73.131:5000/nginx_test
Digest: sha256:c0b69559d28fb325a64c6c8f47d14c26b95aa047312b29c699da10380e90b4d7
Status: Downloaded newer image for 192.168.73.131:5000/nginx_test:latest
[root@nfs133 ~]# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
192.168.73.131:5000/nginx_test   latest              06144b287844        2 weeks ago         109 MB
docker.io/nginx                  latest              06144b287844        2 weeks ago         109 MB

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM