Docker镜像仓库Harbor离线部署
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。
Harbor下载地址:https://github.com/goharbor/harbor/releases
Harbor安装
前提准备:需要事先安装好docker,可参考Docker离线部署
1、安装docker-compose
#Harbor的部署需要事先安装好docker-compose
GitHub的docker-compose下载地址:https://github.com/docker/compose/releases
有网的情况可以直接执行以下命令下载,无网就通过上方地址手动下载下来放置/usr/local/bin/下并授予执行权限即可
curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
#检查是否安装成功
docker-compose --version
2、解压安装包
tar -zxvf harbor-offline-installer-v1.5.3.tgz -C /usr/local
3、修改Harbor配置文件
cd /usr/local/harbor
vi docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 | proxy: image: vmware /nginx-photon :v1.5.3 container_name: nginx restart: always volumes: - . /common/config/nginx : /etc/nginx :z networks: - harbor ports: #修改该项,默认对外映射为80端口,在此我改成了5000 - 5000:80 - 443:443 - 4443:4443 |
vi harbor.cfg
1 2 | #修改为自己本机IP地址 hostname = 192.168.36.151 |
4、安装启动
./install.sh
5、验证
访问http://192.168.36.151:5000即可(自己的设备IP地址)
默认密码:admin/Harbor12345
在配置文件harbor.cfg下有说明,可以进行修改
1 | harbor_admin_password = Harbor12345 |
如果修改了harbor配置文件,需要重启
docker-compose down
./prepare
docker-compose up -d
6、测试连通性
#使用docker访问下harbor看下是否可以成功连接
docker login http:192.168.36.151:5000
1 2 3 | Username: admin Password: Harbor Error response from daemon: Get https: //http :192.168.36.151:5000 /v1/users/ : dial tcp: too many colons in address http:192.168.36.151:5000 |
其实出现以上错误正常的,因为docker默认是https协议的,而harbor是http
7、Harbor的https协议配置
vi harbor.cfg
1 2 3 | #修改以下配置<br>ui_url_protocol = https ssl_cert = /usr/local/harbor/data/cert/server .crt ssl_cert_key = /usr/local/harbor/data/cert/server .key |
mkdir -p /usr/local/harbor/data/cert/
配置秘钥证书
openssl genrsa -des3 -out server.key 2048
1 2 | Enter pass phrase for server.key:1234567 #输入密码 Verifying - Enter pass phrase for server.key:1234567 #输入密码 |
openssl req -new -key server.key -out server.csr
1 2 3 4 5 6 7 8 | Enter pass phrase for server.key:1234567 #上方所创建的密码 Country Name (2 letter code) [XX]:CN #国家 State or Province Name (full name) []:BJ #省 Locality Name (eg, city) [Default City]:BJ #城市 以下可以都为空 Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname ) []: |
cp server.key server.key.org
#退掉密码
openssl rsa -in server.key.org -out server.key
1 | Enter pass phrase for server.key.org:1234567 #输入上方密码 |
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
chmod a+x server.crt server.csr server.key
mv server.crt server.key server.csr /usr/local/harbor/data/cert/
8、重启harbor
docker-compose down
./prepare
docker-compose up -d
此时再次访问harbor页面就会自动走https
但是此时其实docker还是无法连接harbor的
9、配置信任
vi /etc/systemd/system/docker.service
1 2 | #修改以下项,Harbor的地址 ExecStart= /usr/bin/dockerd --insecure-registry 192.168.36.151 |
10、重启Docker
systemctl daemon-reload
systemctl restart docker.service
#再次使用docker访问下harbor看下是否可以成功连接,Login Succeeded即为成功
docker login 192.168.36.151
1 2 3 | Username: admin Password: Harbor12345 Login Succeeded |
Harbor的使用
#首先我们得需要拥有一个镜像,这里,我本地有一个tomcat镜像
docker images
1 2 | REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest c0e850d7b9bb 12 months ago 667 MB |
#需要先给现有镜像打个tag
docker tag tomcat:latest 192.168.36.151/library/tomcat:latest
docker images
1 2 3 | REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.36.151 /library/tomcat latest c0e850d7b9bb 12 months ago 667 MB tomcat latest c0e850d7b9bb 12 months ago 667 MB |
#上传镜像
docker push 192.168.36.151/library/tomcat:latest
#去Habor页面上查看
#从Harbor上拉取镜像
docker pull 192.168.36.151/library/tomcat:latest
若我们的镜像是私有(private)权限的话,则需要docker login认证后才可以进行push和pull操作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了