使用docker-compose搭建私有docker registry
前言
docker hub注册后只可以免费上传一个镜像,不过我们也可以使用其他免费docker仓库,比如腾讯云的免费docker仓库,不受上传限制。
当然我们也可以创建我们自己的私有仓库,再也不用担心上传速度受到影响,并且也更加安全。
示例说明
- 使用的是win10自带的docker
- 服务器使用的是centos系统
- 服务器ip地址以 182.61.60.219 为例(该IP只是示例,并不可用哦)
- 仓库端口以8050为例
- 仓库访问端口以5000为例
- 仓库UI访问端口以5051为例
- 本地局域网地址以192.168.2.106为例
示例目录
搭建私有registry
1.添加auth认证:
htpasswd加密方式 htpasswd命令是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。
Reference
Use
- docker run --entrypoint htpasswd registry -Bbn admin 123456 > ./auth/passwd // 新增用户并创建加密文件(如果系统没有安装此命令,可以使用docker容器中的命令来实现)
- 利用htpasswd命令添加用户 htpasswd -bc htpasswd.user admin 123456
- 在bin目录下生成一个 htpasswd.user 文件,用户名admin,密码:123456,默认采用MD5加密方式。
- 在原有密码文件中增加下一个用户 htpasswd -b htpasswd.user Jack 123456
- 去掉-c选项,即可在第一个用户之后添加第二个用户,依此类推。
- 利用htpasswd命令删除用户名和密码 htpasswd -D htpasswd.user Jack
- 利用htpasswd命令修改密码 htpasswd -b htpasswd.user Jack 123456
2.Config
windows:
默认使用https,使用http需要注册
修改daemon.json文件sudo vim /etc/docker/daemon.json
添加:{ "insecure-registries":["192.168.49.132:5000"]}
注: win10的配置在docker的设置里可以找到daemon配置选项
centos 系统
- 在 /etc/docker/daemon.json 文件中写入:
{
"registry-mirror": [
"https://registry.docker-cn.com"
],
"insecure-registries": [
"[私有仓库 ip:port]"
]
}
- 然后重启 docker
ystemctl restart docker
3.docker-compose.yaml
version: '2.1'
services:
registry:
image: registry
container_name: my_registry
volumes:
- ./registry:/var/lib/registry
- ./auth:/auth
environment:
- REGISTRY_AUTH=htpasswd
- REGISTRY_AUTH_HTPASSWD_REALM=Registry_Realm
- REGISTRY_AUTH_HTPASSWD_PATH=/auth/passwd
restart: always
privileged: true
ports:
- "8050:5000"
4.Login to docker:
docker login http://182.61.60.219:8050
5.Upload to docker:
docker tag hello-world 192.168.2.106:5000/hello-world //设置标签 加上仓库地址前缀
docker push 192.168.2.106:5000/hello-world
6.View image
GET http://192.168.2.106:5000/v2/_catalog
GET http://192.168.2.106:5000/v2/image_name/tags/list
Reference
7. 可以配置UI来美化仓库页面
version: '2.1'
services:
registry-ui:
image: konradkleine/docker-registry-frontend:v2
container_name: my_registry_ui
restart: always
privileged: true
environment:
- ENV_DOCKER_REGISTRY_HOST=182.61.60.219
- ENV_DOCKER_REGISTRY_PORT=8050
ports:
- "8051:80"
总结
- 有时我们系统中没有安装某个命令时,可以使用镜像中的命令来代替实现。
- 步骤7只是用来优化docker仓库页面的,如果不使用UI,那么只可以看到json格式的返回结果。
原博客链接:https://www.cnblogs.com/xpengp/