赞
踩
1.安装centos和docker
centos内核版本在3.10以上(推荐centos7以上),docker在1.6版本以上,具体安装docker和启动服务略过
2.官方获取docker registry镜像并启动
#dockerpull registry 拉取官方私有仓库镜像registry
#docker run -d -p 5000:5000 --restart=always--privileged=true --name registry -v /home/docker_file/repos:/var/lib/registry registry:latest
说明:
-v /home/docker_file/repos:/var/lib/registry 默认情况下,registry会将仓库存放于容器内的/var/lib/registry目录下(不同版本registry的路径可能不一样,具体官网查看其dockerfile),通过此设置将registry仓库地址修改为本机目录的/home/docker_file/repos
–privileged=true :CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报权限错误(OSError: [Errno 13] Permission denied:‘/tmp/registry/repositories/liibrary’)或者(Receivedunexpected HTTP status: 500 Internal Server Error)错误
注:启动成功可以输入docker服务器ip:5000则会返回空白页面,私有仓库默认端口5000
3.验证本地镜像仓库
拉取alpine镜像,然后修改tag(原tag:docker.io/alpine:latest),再push到本地镜像仓库,命令如下;
# docker tag alpine:latest localhost:5000/alpine:latest
# docker pushlocalhost:5000/alpine:latest 将alpine上传到本地镜像仓库
删除images中的alpine:latest,重新拉取本地镜像仓库的alpine:latest测试,如下:
#docker rmi alpine:latest
#docker pull localhost:5000/alpine:latest
通过docker images可查看localhost:5000/alpine:latest证明本地镜像仓库安装成功
#curl http://localhost:5000/v2/_catalog 查看本地镜像的列表
#curl http://localhost:5000/v2/image_name/tags/list 获取某个镜像的标签列表
4.远程访问私有镜像仓库
以上配置是只能当前服务器可访问仓库,要远程访问registry,需要配置客户端的docker访问模式支持http,docker与dockerregistry交互默认使用的是https,而搭建的私有仓库一般只提供http服务。
4.1 修改docker配置文件/etc/sysconfig/docker(ubuntu为/etc/default/docker)
#vi /etc/sysconfig/docker
4.2 修改配置文件如下
OPTIONS='--insecure-registryregistry.hub:5000'
ADD_REGISTRY='--add-registryregistry.hub:5000'
说明:registry.hub为docker私有仓库服务器的ip或域名
4.3 重启docker
#systemctl restart docker.service
4.4 测试
可以直接拉取刚才创建的docker私有仓库服务器的镜像,无需registry的域名和端口。
5.部署registry的web管理端
registry的web ui工具目前主流的有docker-registry-frontend和docker-registry-web,根据docker hub上的stars流行度来说,本次使用docker-registry-frontend来搭建registry的web ui管理端,目前此版本仅支持私有仓库镜像的浏览。
直接从docker hub中拉取运行即可
使用方法:
# docker run -d -eENV_DOCKER_REGISTRY_HOST=192.168.17.129 -e ENV_DOCKER_REGISTRY_PORT=5000 -p 8080:80konradkleine/docker-registry-frontend:v2
说明:执行此命令,会自动从docker hub中下载并运行docker-registry-frontend
参数说明:
ENV_DOCKER_REGISTRY_HOST 指定对应registry私服的域名或ip
ENV_DOCKER_REGISTRY_PORT指定对应registry私服的端口
docker-registry-frontend运行容器使用apacheweb服务器暴露80端口,外部访问需要做服务器和容器端口绑定,此处绑定服务器的8080端口。
其它常用参数:
-e ENV_DOCKER_REGISTRY_USE_SSL=1 registry私服仅能通过HTTPs访问
-e ENV_MODE_BROWSE_ONLY=true 仅浏览不能关联镜像模式启动
-eENV_DEFAULT_REPOSITORIES_PER_PAGE=50 修改web端每页的镜像数,默认20
-e ENV_DEFAULT_TAGS_PER_PAGE=5 修改web端镜像每页的tag数,默认10
docker-registry-frontend支持https访问,需要映射端口和关联https证书
,参数如下:
-v $PWD/server.crt:/etc/apache2/server.crt:ro
-v $PWD/server.key:/etc/apache2/server.key:ro
-p 443:443
5.其它问题
启动web管理端后如无法加载任何镜像,报错如下:
原因是docker-registry-frontend容器内无法访问注册服务器,解决办法是通过容器互联,使前者可以访问注册服务器的对应5000端口,命令如下:
docker run -d -eENV_DOCKER_REGISTRY_HOST=registry -e ENV_DOCKER_REGISTRY_PORT=5000 -p 8080:80--link registry:registry konradkleine/docker-registry-frontend:v2
问题分析请参照我的问题解决历程:
https://github.com/kwk/docker-registry-frontend/issues/181
最后贴一个镜像管理页面的成功运行图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。