docker私有仓库搭建

docker 私有仓库搭建

环境准备

服务器(推荐使用自己熟悉的 Linux 操作系统)且已安装 docker和docker compose
安装过程可以参照链接

写在前面
自建docker仓库也是依赖于docker容器提供服务的

最基础(简单)的私有仓库搭建

  • 没有UI界面,无需身份认证
  • 只需安装了 docker 就可以

拉取所需镜像 registry:2

docker pull registry:2
# 或者拉去最新的镜像也可以 docker pull registry

创建仓库数据目录(根据实际情况进行创建)

mkdir -p /home/registry/data

启动(运行)

docker run -d  --name registry --restart=always \
-p 5000:5000 -v /home/registry/data:/var/lib/registry registry:2

访问试试

  • 检查防火墙,如果防火墙处于开启状态,则需要开放5000端口
# 查看防火墙运行状态,如果看到active则是开启的状态,否则是关闭的状态
systemctl status firewalld

# 临时关闭防火墙
systemctl stop fiewalld

# 永久关闭防火墙
systemctl disable firewalld

# 查看防火墙开发的端口
firewall-cmd --list-ports

# 开放5000端口,并刷新
firewall-cmd --zone=public --add-port=5000/tcp --permanent
firewall-cmd --reload
  • 验证(查看镜像仓库中的所有镜像)
    http://ip:5000/v2/_catalog

客户端使用

因为私有仓库需要使用https方式访问,但是ssl证书需要购买,所以这里设置使用http的方式进行访问。
在客户端的配置文件中(一般是 /etc/docker/daemon.json),添加 "insecure-registries":"私有仓库IP地址:5000",添加完成之后重新加载docker配置并重启

 systemctl daemon-reload && systemctl restart docker
  • 客户端重做镜像
docker tag image:tag 私有仓库IP:5000/image:tag
  • 客户端推送镜像
docker push 私有仓库IP:5000/image:tag
  • 检查
    http://ip:5000/v2/_catalog
    或者直接查看目录文件 ls /home/docker/data/registry/data/v2/repository

带UI的私有仓库

  • 在原有的基础上进行添加UI界面
  • 使用docker compose完成安装搭建

创建dokcer compose

在/home/docker/data/registry下创建docker compose文件【vi docker-compose.yml】并写入如下内容

version: "3.8"
services:
  registry-server:
    image: registry
    volumes:
      - /home/docker/data/registry:/var/lib/registry
  registry-ui:
    image: joxit/docker-registry-ui
    ports:
      - 80:80
    environment:
      - REGISTRY_TITLE=Private Docker Repository
      - REGISTRY_URL=http://registry-server:5000
    depends_on:
      - registry-server

保存后执行 docker compose up -d

访问:http://私有仓库IP(注意防火墙!)

安全加固

  • 在原有的基础上进行安全认证

安装 htpasswd工具

yum install -y httpd-tools

创建用户和对应的登录凭据

# passwd是登录凭据文件 -B 强制密码加密 -b 命令行密码 -n 不更新加密文件
htpasswd -Bbn 密码 > /home/docker/data/registry/auth/passwd

运行容器

docker run -d  --name registry \
--restart=always \
-p 5000:5000 \
-v /home/docker/data/registry/data:/var/lib/registry \
-v /home/docker/data/registry/auth:/etc/registry/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/home/docker/data/registry/auth/passwd" \
registry:2

访问看看

页面需要输入刚才设置的用户名和密码登录后才可看到数据 http://ip:5000/v2/_catalog

推送镜像到私有仓库

  • 推送镜像之前需要登录

    docker login 私有仓库IP:5000
    

带UI的安全加固

创建docker compose

version: "3.8"
services:
	registry:
		image: registry-server
		volumes:
			- /home/docker/data/registry/data:/var/lib/registry
			- /home/docker/data/registry/auth:/etc/registry/auth
		environment:
			- REGISTRY_AUTH=htpasswd
			- REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
			- REGISTRY_AUTH_HTPASSWD_PATH=/home/docker/data/registry/auth/passwd
	registry-ui:
		image: joxit/docker-registry-ui
		ports:
			- 80:80
		environment:
			- REGISTRY_TITLE=my private repository
			- REGISTRY_URL=http://registry-server:5000			
		depends_on:
			- registry-server

访问测试

与前面 带UI的私有仓库 访问方式一样,只是这里的也需要登录后才可查看到数据

写在最后
最近国内docker镜像源均无法正常拉取镜像,所以搭建私有的仓库是一件亟须的事情。
如果私有仓库是在内网中使用的,一般部署基础的就可以满足使用所需,如果是暴露在公网上但又不想被其他人访问,则安装安全加固的仓库。至于有没有UI页面,根据实际情况选择就可以了。

到此,结束!

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值