Docker Hub

    是Docker公司维护的公共Registry,用户可以将自己的镜像保存到Docker Hub免费的repository中,除了 Docker Hub,quay.io是另一个公共 Registry,提供与Docker Hub类似的服务

使用Docker Hub公共仓库存取镜像:
    申请hub.docker.com账号实现容器镜像上传下载到镜像库
    创建一个test目录,上传下载地址dockercbb/test
    登录共有镜像存储仓库
    默认登录(登录后输入账号密码)
    docker login

私有镜像库登录方法(因为我们是https协议,需要把镜像仓库证书导入到本地):
echo "-----BEGIN CERTIFICATE-----
MIIEDzCCAvegAwIBAgIJAPlFtdeNcWKWMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYD
VQQGEwJjbjEQMA4GA1UECAwHYmVpamluZzEQMA4GA1UEBwwHYmVpamluZzERMA8G
A1UECgwIaWhhbmdtZWkxDDAKBgNVBAsMA29wdDEgMB4GA1UEAwwXcmVnLmRldm9w
cy5paGFuZ21laS5jb20xJjAkBgkqhkiG9w0BCQEWF2Rvbmd6aGltaW5AaWhhbmdt
ZWkuY29tMCAXDTE3MDUxMTAxNTUyNloYDzIxMTcwNDE3MDE1NTI2WjCBnDELMAkG
A1UEBhMCY24xEDAOBgNVBAgMB2JlaWppbmcxEDAOBgNVBAcMB2JlaWppbmcxETAP
BgNVBAoMCGloYW5nbWVpMQwwCgYDVQQLDANvcHQxIDAeBgNVBAMMF3JlZy5kZXZv
cHMuaWhhbmdtZWkuY29tMSYwJAYJKoZIhvcNAQkBFhdkb25nemhpbWluQGloYW5n
bWVpLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANpWtQx7z3pA
jcd7X4Aq79ANNOX+N6qHt1WXOmWUKmyJjsR4n3150URFdi+UyQg8NMCt2gq7W3vF
8fnQbwaBYftY1eLytVxytuJRFMDJDdtoKOpHZV9iG17EiAlYUFHO+IuDSXqbSIO1
nFktOL+mPTKTZbaUgK2kUUxv8siukTOBYsi1mSARSfmkDM2vv5d9+mgyWgMcKeVj
9duP7mxoJ+/ukocjmNCEqTBel4HjGuSfB/J/p9LTaDwhT5JS7FSgaKbPf6VwReUR
A6RzmEsiIw0CAwEAAaNQME4wHQYDVR0OBBYEFNULv/h6dC32Yucklil8QC3y73Hc
MB8GA1UdIwQYMBaAFNULv/h6dC32Yucklil8QC3y73HcMAwGA1UdEwQFMAMBAf8w
DQYJKoZIhvcNAQELBQADggEBAEUfwEoRAuDxCEuewXbXn6DY8t9pGqkPR+ziUq3x
DfNb9wI+fb2bvztEcjnRKTwVnfasFSbPUOB7Ko5KxIT91uFH4o2kOycSBQlgvAJK
9Y8Se/M24NFIEaHZUXyIIao2VTXN7clNg+adBYWYmyq2D1Fk0MLh71ZXemvsGyCc
YWAdN8mTEAn/jVp87VbLRriUEJxNLsQb+TGu9ADGWBQzJsrRwpH9a3aogj1wwINY
QdpLhfSaOUKPi5+oo30pyLbnNsWZzNRLPSuA8M1K/Kzd9BTGeY4qmvHEk2AmdIB6
4IG8cGiweQpGs5uG/I+SbGV7YbyNxunayZYFXhh2LCFuCA0=
-----END CERTIFICATE-----" >> /etc/pki/tls/certs/ca-bundle.crt
docker login -u username -p passwd https://reg.devops.ihangmei.com

#查看镜像
docker images
修改镜像的repository使之与Docker Hub账号匹配
Docker Hub为了区分不同用户的同名镜像,镜像的registry中要包含用户名,完整格式为: username/xxx:tag
我们通过 docker tag 命令重命名镜像

#把要上传的镜像打好标签
docker tag centos dockercbb/test:v1
#上传到镜像仓库中
docker push dockercbb/test:v1
#下载到本地
docker pull dockercbb/test:v1
此时登录hub.docker.com的web页面也可以看到上传的镜像


原理图:

图片.png

Docker Hub 虽然非常方便,但还是有些限制
1、需要internet连接,而且下载和上传速度慢
2、上传到Docker Hub的镜像任何人都能够访问,虽然可以用私有repository但不是免费的
3、安全原因很多组织不允许将镜像放到外网

搭建私有Registry镜像仓库
Docker已经将Registry开源了,同时在Docker Hub上也有官方的镜像registry

启动registry容器
docker run -d -p 5000:500 -v /opt/:/var/lib/registry registry:2
    -d 后台启动容器
    -p 将容器的5000端口映射到Host的5000端口,5000是registry服务端口
    -v 将容器/var/lib/registry目录映射到Host的/opt,用于存放镜像数据

通过docker tag重命名镜像,使之与registry匹配
registry-host:port/username/xxx
上传和下载镜像和公共镜像库一样

私有registry也支持认证,https安全传输等特性,具体可以参考官方文档 https://docs.docker.com/registry/configuration/