Administrator
发布于 2022-11-13 / 49 阅读 / 0 评论 / 0 点赞

9.私有仓库

私有仓库

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
如果遇到以下错误:

image-1668313259573

这是因为docker push默认使用HTTPS协议,而服务端的registry仓库使用的是HTTP
解决这个问题,需要修改/etc/docker/daemon.json,加入

"insecure-registries": ["192.168.56.108:5000"]

harbor

habor是一个功能更强大镜像仓库,它具有完整的权限控制和Web界面,更符合我们的实际工作场景。
下载bitname发布的harbor镜像配置包:https://github.com/bitnami/containers/archive/main.tar.gz

mkdir harbor
tar xzvf containers-main.tar.gz
cd containers-main/bitnami/harbor-portal
docker compose up -d

浏览器访问:http://192.168.56.108,默认用户名/密码:admin/bitnami

image-1668313272935

保存与加载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导出的只有容器层,不包含父层和标签信息。


评论