仓库主要用于镜像的存储,他是Docker镜像分发、部署的关键
我们可以使用公有仓库Docker Hub,也可以搭建自己的私有仓库来存储我们的镜像。
一.公有仓库
1.创建Docker Hub账户(Web页面创建即可,https://hub.docker.com)
2.登录Docker Hub账户(Web页面登录,Linux: docker login)
3.基本操作:
上传镜像:docker push IMAGE:VERSION [docker push ubuntu1404-baseimage:1.0]
搜索镜像:docker search NAME/MESSAGE/USERNAME... [docker search centos]
下载镜像:docker pull NAME... [docker pull centos] 下载官方提供的CentOS镜像
二.私有仓库
1.安装docker-registry
#docker run -p 5000:5000 registry [使用官方提供的docker-registry镜像来安装][ -e 可以设置配置参数]
#docker run \
-e SETTINGS_FLAVOR=s3 \
-e AWS_BUCKET=mybucket \
-e STORAGE_PATH=/registry \
-e AWS_KEY=myawskey \
-e AWS_SECRET=myawssecret \
-e SEARCH_BACKEND=sqlalchemy \
-l 5000:5000 \
registry [配置使用Amazon S3存储镜像]
#yum install docker-registry -y [使用rpm包安装 ( EPEL \\Fedora Extra Packages for Enterprise Linux )]
启动docker-registry
#service docker-registry start
#service docker-registry status
默认docker-registry会监听5000端口,启动八个工作进程 /etc/docker-registry.yml时设置的
2.docker-registry配置文件
在默认情况下,docker-registry使用config_sample.yml进行各种配置,rpm方式则使用/etc/docker-registry.yml
3.构建安全的私有仓库
由于docker-registry没有提供安全认证服务,所有知道URL的人都可以上传镜像,我们需要认证功能,可以使用Nginx构建一个带有认证功能的私有仓库。
yum install nginx -y
创建/etc/nginx/conf.d/registry.conf文件
创建/etc/nginx/docker-registry.conf文件
用htpasswd -bc /etc/nginx/docker-registry.htpasswd USERNAME PASSWORD创建认证的用户和密码
cat /etc/nginx/docker-registry.htpassed
【创建自己的CA】
#openssl genrsa -des3 -out ca-key.pem 2048
#openssl req new -x509 -days 3600 -key ca-key.pem -out ca.pem
【创建证书】
#openssl genrsa -des3 -out server-key.pem 2048
#openssl req -subj '/CN=dev.registry.com' -new -key server-key.pem -out server.csr
#openssl x509 -req -days 3650 -in server,csr -CA ca.pem -CAKEY ca-key.pem -out server-cert.pem
【删除server key中的passphrase】
#openssl rsa -in server-key.pem -out server-key.pem
【安装server-key和server-crt】
#cp server-cert.pem /etc/ssl/certs/docker-registry.crt
#cp server-key.pem /etc/ssl/private/docker-registry.key
【启动nginx】
#server nginx start
【客户端安装CA】
#update-ca-trust enable
#cp ca.pem /etc/pki/ca-trust/source/anchors/ca.crt
#update-ca-trust extract
【重启docker】
【登录nginx】
#docker login -u docket -p docker -e db yin@tencent.com https://dev.registry.com
会在$home/目录下生成一个.dockercfg文件,保存认证信息
【可以上传自己的镜像了】
#docker image
#docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
标记本地镜像,并将它归入某一仓库
#docker push *
网友评论