docker 私有仓库搭建
什么是私有仓库:
一般是公司内部使用的私有镜像仓库。不对外部开放的镜像仓库,
为什么需要私有仓库:
(1)安全性问题:
官方镜像仓库大家都可以访问,若都放在官方,那自然大家都能拿到你们公司的自建镜像。
(2)访问速度:
官方的服务器在国外,访问速度可想而知,有时候甚至官方网站都打不开。
主流的私有仓库:
docker registry:
是一个轻量级的私有镜像仓库,基本上,基本上不占用内存,很适合学习环境中使用。
上传的镜像会被进行压缩处理,没有提供较好的WebUI,维护起来比较麻烦,尤其是删除镜像。
harbor:
基于官方的"docker registry"进行二次开发,是一个时候企业级使用的镜像仓库。
部署harbor服务:
1.GitHub的官方地址
https://github.com/goharbor/harbor
2.下载harbor
wget https://github.com/goharbor/harbor/releases/download/v2.8.2/harbor-offline-installer-v2.8.2.tgz
harbor: https://url69.ctfile.com/d/253469-56504576-2da440?p=2206 (访问密码: 2206)
3.解压软件包
tar xf harbor-offline-installer-v2.8.2.tgz -C /baimei/softwares/
4.修改配置文件
cd /baimei/softwares/harbor/
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
添加主机名称
hostname: harbor.baimei.com
# 注意掉https的相关配置
# https:
# # https port for harbor, default is 443
# port: 443
# # The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
...
# 设置管理员密码
harbor_admin_password: 1
5.安装harbor
./install.sh
修改一下 配置文件后 再次 安装
成功
6.登录harbor
echo 1 | docker login -u admin --password-stdin harbor.baimei.com
出现这个错误需要修改:
cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://tuv7rqqq.mirror.aliyuncs.com"],
"insecure-registries": ["10.0.0.202:5000"]
}
端口一定是 配置的 port
修改后 重启docker
systemctl restart docker
systemctl start docker
docker-compose up -d # 启动任务
http://10.0.0.202/
浏览器访问:
新建项目:
docker tag SOURCE_IMAGE[:TAG] harbor.baimei.com/test/REPOSITORY[:TAG]
我们来推送一个 镜像到 harbor 上
先下载一个镜像:
docker run alpine
docker tag alpine:latest harbor.baimei.com/test/alpine:v3
docker push harbor.baimei.com/test/alpine:v3
解决方法:
vim /etc/docker/daemon.json
[root@baimeidashu ~]#cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://tuv7rqqq.mirror.aliyuncs.com"],
"insecure-registries": ["10.0.0.202:5000","harbor.baimei.com"]
}
harbor.baimei.com
加入进去。
重启 docker 服务
systemctl rejstart docker
再次push
docker push harbor.baimei.com/test/alpine:v3
又报错了。
unauthorized: unauthorized to access repository: test/alpine, action: push: unauthorized to access repository: test/alpine, action: push
原因就是 ,没有权限
我们登录一下:
docker login -u admin -p 1 harbor.baimei.com
这样密码就会保存在一个文件中
docker 退出后 密码文件消失
再次 push 就会成功了
cat /root/.docker/config.json
[root@baimeidashu /baimei]#cat /root/.docker/config.json
{
"auths": {
"harbor.baimei.com": {
"auth": "YWRtaW46MQ=="
}
}
}
echo YWRtaW46MQ== | base64 -d
bas64 解码
补充:
harbor 的数据都存在了 ll /data/
启动 项目 :
docker-compos up -d
开机自动启动:linux设置开机自动执行命令(开机启动) :连接
sh /baimei/softwares/harbor/install.sh
vim /etc/rc.local
成功了。
harbor配置自建证书 ssl :连接
知识点
# echo 1 | docker login -u admin --password-stdin harbor.baimei.com
# docker login -u admin -p 1 harbor.baimei.com
# docker login harbor.baimei.com
退出harbor:
# docker logout harbor.baimei.com
Error response from daemon: Get "https://harbor.baimei.com/v2/": dial tcp 10.0.0.202:443: connect: connection refused
这个原因,我们来解决一下:
harbor: https://url69.ctfile.com/d/253469-56504576-2da440?p=2206 (访问密码: 2206)