docker仓库

  • 1.docker仓库
  • 2.docker hub
  • 安装
  • 登录
  • 配置(建立一个私有库westos,两个不同身份认证的用户)
  • 创建用户
  • 测试
  • 远端登录
  • 镜像加速
  • 排错
  • 3.registry工作原理
  • 4.harbor仓库
  • 部署
  • 部署根证书:
  • 启用docker内容信任:
  • 上传镜像:
  • 关闭
  • 5.docker 仓库子命令


1.docker仓库

Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。
Docker运行中使用的默认仓库是 Docker Hub 公共仓库。

2.docker hub

docker hub是docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库。

安装

openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key -x509 -days 365 -out certs/westos.org.crt

docker hub 发布 dockerhub搭建_docker hub

docker hub 发布 dockerhub搭建_搭建私有镜像库_02

docker hub 发布 dockerhub搭建_harbor_03

docker hub 发布 dockerhub搭建_docker hub_04

docker hub 发布 dockerhub搭建_docker hub_05


docker hub 发布 dockerhub搭建_docker_06


docker hub 发布 dockerhub搭建_harbor_07

docker hub 发布 dockerhub搭建_搭建私有镜像库_08

登录

docker hub 发布 dockerhub搭建_搭建私有镜像库_09


docker hub 发布 dockerhub搭建_docker hub_10


docker hub 发布 dockerhub搭建_搭建私有镜像库_11


docker hub 发布 dockerhub搭建_docker_12

配置(建立一个私有库westos,两个不同身份认证的用户)

3.registry工作原理

创建用户

westos linux

docker hub 发布 dockerhub搭建_docker_13


docker hub 发布 dockerhub搭建_harbor_14

测试

退出登录 docker logout

docker hub 发布 dockerhub搭建_docker_15


在向私有库westos中上传镜像时,需将镜像名字改为如下图所示名字reg.westos.org/westos/mario:latest

docker hub 发布 dockerhub搭建_docker_16

远端登录

server2 同样安装docker-ce 开机自启

将证书传过去
[root@server1 ~]# scp /etc/docker/certs.d/reg.westos.org/ca.crt server2:/etc/docker/certs.d/reg.westos.org

镜像加速

docker hub 发布 dockerhub搭建_harbor_17


systemctl reload docker.service

此处忽略补充
################################################################################
镜像加速器补充:(远端中使用)
无需认证
[root@server2 docker]# cat /etc/docker/daemon.json
{
“insecure-registries”: [“172.25.10.1:5000”]
}
用户认证

[root@server1 ~]# mkdir auth
[root@server1 ~]# htpasswd -B -c auth/htpasswd ww
New password:
Re-type new password:
Adding password for user ww
[root@server1 ~]# htpasswd -B auth/htpasswd admin
New password:
Re-type new password:
Adding password for user admin
[root@server1 ~]# cat auth/htpasswd
ww:$2ydocker hub 发布 dockerhub搭建_docker hub_18Cc7XW1sHeWykhTFn9HkOC.RIeE6OdotF0ROgSjeLlvxwEYrwnLEsy
admin:$2ydocker hub 发布 dockerhub搭建_docker hub_18dGYLbZrCi3STHfEzkj8XseFSZQtdwgcglupkz.FIHSg8n5cDh27hS
重建registry容器

[root@server1 ~]# docker run -d --name registry -p 443:443 -v /opt/registry:/var/lib/registry -v "$(pwd)"/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key -v "$(pwd)"/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry
—


#####################################################################

docker hub 发布 dockerhub搭建_docker hub_20


docker hub 发布 dockerhub搭建_harbor_21


docker hub 发布 dockerhub搭建_docker hub_22

排错

docker hub 发布 dockerhub搭建_harbor_23

3.registry工作原理

Docker index服务主要提供镜像索引以及用户认证的功能。当下载一个镜像的时候,首先会去index服务上做认证,然后查找镜像所在的registry的地址并放回给docker客户端,docker客户端再从registry下载镜像,在下载过程中 registry会去index校验客户端token的合法性,不同镜像可以保存在不同的registry服务上,其索引信息都放在index服务上。

Docker Registry有三个角色,分别是index、registry和registry client。

index
负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。
Web UI
元数据存储
认证服务
符号化

registry
是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过Index Auth service的Token的方式进行认证。
Registry Client
Docker充当registry客户端来维护推送和拉取,以及客户端的授权

4.harbor仓库

部署

docker hub 发布 dockerhub搭建_docker hub 发布_24

部署根证书:

/etc/docker/certs.d/reg.westos.org/ca.crt~/.docker/tls/reg.westos.org:4443/ca.crt

docker hub 发布 dockerhub搭建_docker_25

启用docker内容信任:

export DOCKER_CONTENT_TRUST=1
export DOCKER_CONTENT_TRUST_SERVER=https://reg.westos.org:4443

docker hub 发布 dockerhub搭建_docker hub 发布_26

上传镜像:

docker hub 发布 dockerhub搭建_docker_27


docker hub 发布 dockerhub搭建_docker hub_28

关闭

[root@server1 ~]# export DOCKER_CONTENT_TRUST=0
[root@server1 ~]# cd harbor/
[root@server1 harbor]# docker-compose down

[root@server1 harbor]# ./prepare 清理
扫描会产生大量的缓存,需及时清理

5.docker 仓库子命令

docker serach

查询镜像

docker pull

拉取镜像

docker push

上传镜像

docker login

登录仓库

docker logout

登出仓库