docker registry
我们可以使用docker push将自己的image推送到docker hub中进行共享,但是在实际工作中,很多公司的代码不能上传到公开的仓库中,因此我们可以创建自己的镜像仓库。
docker 官网提供了一个docker registry的私有仓库项目,可以方便的通过docker部署。
docker run -d -p 5000:5000 --restart always --name registry registry:2
docker image tag ruoyi-java:4.7.4 localhost:5000/ruoyi-java:4.7.4
docker push localhost:5000/ruoyi-java:4.7.4
docker pull localhost:5000/ruoyi-java:4.7.4
docker push默认使用HTTPS协议,而服务端的registry仓库使用的是HTTP。
解决这个问题,需要修改/etc/docker/daemon.json,加入
"insecure-registries": ["192.168.10.133:5000"]
harbor
habor是一个功能更强大镜像仓库,它具有完整的权限控制和Web界面,更符合我们的实际工作场景。
保存与加载image
当我们处于离线状态,比如在很多内网上不能访问互联网,这时候不能通过镜像仓库的方式共享image,我们可以使用导出和导入功能,手动拷贝镜像。
docker save会包含所有层,以及所有标签 + 版本信息。
docker save alpine:3.15 > alpine-3.15.tar 保存image
docker rmi alpine:3.15 删除本地image
docker load < alpine-3.15.tar 加载image
注意:
不要跟export和import命令混淆
docker save/load IMAGE save和load操作的是镜像
docker export/import CONTAINERexport和import操作对象是容器
image包含多个层,每一层都不可变,save保存的信息包含每个层和所有标签 + 版本信息。
容器运行的时候会创建一个可写入的容器层,所有的更改都写入容器层,export导出的只有容器层,不包含父层和标签信息。
具体搭建流程
一 环境准备
安装docker和docker-compose
docker可选择二进制或yum安装(注意点:这里的如果是二进制安装,切忌不要配置zip,否则无法登录会报500或502错误)
curl -SL https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
##测试
docker-compose version
二 harbor下载
Release 1.2.2 · goharbor/harbor · GitHubhttps://github.com/goharbor/harbor/releases/tag/v1.2.2
v1.2 · Releases · goharbor/harbor (github.com)https://github.com/goharbor/harbor/releases?expanded=true&page=15&q=v1.2输入v1.2-第15页为1.22版本
建议直接下载,使用wget太慢
三 跟着以下文档操作
Docker 私有仓库 harbor 搭建_docker构建harbor-CSDN博客
四 出现问题
这个错误表明在尝试推送镜像时,Docker 发现本地不存在标签为 192.168.10.133/library/photon
的镜像。这可能是因为你尚未在本地构建或拉取过具有该标签的镜像。
1.构建镜像并打上标签:如果你已经有一个本地的镜像,并且希望将其推送到 192.168.10.133/library/photon
这个仓库,需要先为该镜像打上正确的标签,然后再进行推送
2. 推送的镜像于远程仓库中
总结:推送到指定的仓库的项目中,1.了解该项目推送命令 2.给要推送的镜像指定正确项目标签 3.推送