5.docker的私有镜像仓库
孙富阳, 江湖人称没人称。多年互联网运维工作经验,曾负责过孙布斯大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型博客网站运维工作。
1.私有镜像仓库基本介绍
Docker 官方的Docker hub ( http://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像到本地,也可以把我们自己的镜像文件推送上去。但是,有时候我们的服务器无法访问互联网,或者你不想将自己的镜像放到公网当中,那么我们就需要搭建自己的私有仓库来存储和管理自己的镜像
#镜像地址说明
nginx:1.15 官方仓库的官方镜像
nginx/nginx:1.15 官方仓库的用户镜像
daocloud.io/nginx/nginx:1.15 私有仓库的镜像
私有仓库主要有轻量级私有仓库docker-registry和企业级私有仓库harbor
2.轻量级私有仓库docker-registry
1.#导入镜像
[root@docker02 ~]# docker image load -i registry.tar.gz
2.#启动私有仓库
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry
3. #第一次上传镜像会报错因为默认走https协议,需要编写这个配置文件
[root@docker02 ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],###加速用的
"insecure-registries": ["10.0.0.12:5000"]###指定仓库的域名加端口
}
4#重启服务、打包镜像并上传镜像
[root@docker02 ~]# systemctl restart docker
[root@docker02 ~]# docker tag alpine_nginx:v1 10.0.0.12:5000/sunfuyang/alpine_nginx:v1
[root@docker02 ~]# docker push 10.0.0.12:5000/sunfuyang/alpine_nginx:v1
5.打开浏览器访问10.0.0.12:5000/v2/_catalog查看上传的镜像
6.推送一个其他镜像试试
[root@docker02 ~]# docker tag centos7_nginx_ssh:v3 10.0.0.12:5000/sunfuyang/centos7_nginx:v2
[root@docker02 ~]# docker push 10.0.0.12:5000/sunfuyang/centos7_nginx:v2
上传镜像就两步骤:1是标签,2是推送。标签决定了往哪个仓库上传
nginx:alpine标签上传至官方仓库
id/nginx:alpine标签上传至官方仓库的个人仓库
docker.mirrors.ustc.edu.cn/library/nginx:alpine标签上传至私有仓库
7.#下载镜像
##先编辑配置文件
[root@docker01 ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["10.0.0.12:5000"]
}
[root@docker01 ~]# systemctl restart docker
[root@docker01 ~]# docker pull 10.0.0.12:5000/sunfuyang/alpine_nginx:v1
8.那么如何删除仓库里的镜像?(比较麻烦)
1.先进到容器里面
[root@docker02 ~]# docker exec -it registry /bin/sh
/ # cd /var/lib/registry/docker/registry/v2
2.删除镜像的信息
/var/lib/registry/docker/registry/v2 # rm -rf repositories/oldzhang/centos7_nginx
3释放镜像占用的空间
/var/lib/registry/docker/registry/v2 # registry garbage-collect /etc/docker/registry/config.yml
9、列出所有的镜像
curl -X GET http://192.168.37.100:5000/v2/_catalog
21、列出指定镜像的所有标签
2.1查看镜像busybox下的tag
curl -X GET http://192.168.37.100:5000/v2/busybox/tags/list
3.企业级私有仓库harbor(docker-compose管理)
1.docker官方仓库,需要在官网注册账号https://hub.docker.com/
1.登录私有仓库
[root@docker01 ~]# docker login -u 2195802440
登录后会有个警告提示,登录密码被记录在了/root/.docker/config.json.里
2.打标签
[root@docker01 ~]# docker tag youxi:v1 2195802440/youxi:v1
3.上传镜像
[root@docker01 ~]# docker push 2195802440/youxi:v1
4.删除原有镜像,尝试下载镜像运行查看
[root@docker01 ~]# docker pull 2195802440/youxi:v1
[root@docker01 ~]# docker run -d -p 80:80 2195802440/youxi:v1
5.删除的话网页就可以删除
------------------------------------------------------------------------------
2.harbor私有云仓库安装与使用
1.#下载安装器
[root@docker01 ~]# wget https://github.com/goharbor/harbor/releases/download/v2.3.1/harbor-offline-installer-v2.3.1.tgz
2.#解压
[root@docker01 ~]# tar xf harbor-offline-installer-v2.3.1.tgz
3.#修改配置文件
[root@docker01 /opt/dockerfile]# cd harbor/
[root@docker01 /opt/dockerfile/harbor]# cp harbor.yml.tmpl harbor.yml
注释掉https相关的内容
[root@docker01 ~/harbor]# egrep -v '#|^$|^[ ]+$' harbor.yml
hostname: harbor.com
http:
port: 80
harbor_admin_password: 123456
database:
password: root123
max_idle_conns: 100
max_open_conns: 900
data_volume: /data
trivy:
ignore_unfixed: false
skip_update: false
insecure: false
jobservice:
max_job_workers: 10
notification:
webhook_job_max_retry: 10
chart:
absolute_url: disabled
log:
level: info
local:
rotate_count: 50
rotate_size: 200M
location: /var/log/harbor
_version: 2.3.0
proxy:
http_proxy:
https_proxy:
no_proxy:
components:
- core
- jobservice
- trivy
清除多余容器,避免80端口冲突
[root@docker01 /opt/dockerfile/harbor]# docker rm `docker ps -a -q`
4.#执行安装脚本、打开浏览器访问查看
[root@docker01 /opt/dockerfile/harbor]# ./install.sh
也可以看看docker的镜像和启动的容器
-------------------------------------------------------------------------------
5.harbor使用
harbor在11的机器上。我们在12机器上测试
1.编辑配置文件、否则登录不上,因为走的是https协议
[root@docker01 /opt/dockerfile/harbor]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["10.0.0.11"]
}
##重启服务
[root@docker01 /opt/dockerfile/harbor]# systemctl restart docker
##登录11机器
[root@docker01 ~]# docker login 10.0.0.11
##输入用户名:admin 密码:123456
提示有个密码文件需要删除,请删除它。否则账号密码会暴露:
-------------------------------------------------------------------------------
##接下来去10.0.0.11的网页上复制推送的命令(改吧改吧)
docker tag SOURCE_IMAGE[:TAG] harbor.com/sunfuyang/REPOSITORY[:TAG]
##先打标签
[root@docker02 ~]# docker tag centos:7 harbor.com/sunfuyang/centos7:v1
##推送镜像
[root@docker02 ~]# docker push harbor.com/sunfuyang/centos7:v1
##打开浏览器查看
3.为harbor配置https证书
1.将下载好的证书传到01机器上的certs的目录中并解压
[root@docker01 ~/certs]# mkdir -p /opt/harbor/certs
[root@docker01 ~]# cd /opt/harbor/certs
[root@docker01 /opt/harbor/certs]# unzip blog.com.zip
2.#修改harbor.yml(前面我们把https都注释掉了,现在我们把它都打开)
[root@docker01 ~/harbor]# grep -Ev '#|^$|^[ ]+$' harbor.yml
hostname: harbor.com
http:
port: 80
https:
port: 443
certificate: /opt/blog.com.pem
private_key: /opt/blog.com.key
harbor_admin_password: 123456
database:
password: root123
max_idle_conns: 100
max_open_conns: 900
data_volume: /data
trivy:
ignore_unfixed: false
skip_update: false
insecure: false
jobservice:
max_job_workers: 10
notification:
webhook_job_max_retry: 10
chart:
absolute_url: disabled
log:
level: info
local:
rotate_count: 50
rotate_size: 200M
location: /var/log/harbor
_version: 2.3.0
proxy:
http_proxy:
https_proxy:
no_proxy:
components:
- core
- jobservice
- trivy
3.修改安装配置文件,注释(因为我们每次执行安装的时候他都会重新走一遍安装流程,重新加载镜像,但是我们已经有镜像了,不需要重新加载)
[root@docker01 /opt/dockerfile/harbor]# vim install.sh
找到install.sh 中的docker load -i 并注释掉
4.#重新执行安装脚本
[root@docker01 /opt/dockerfile/harbor]# ./install.sh
5.打开浏览器访问(打不开的话记得修改本地hosts文件解析)
6.接下来咱们在02机器上登录一下
##先修改配置文件,不能再用ip地址得了
[root@docker02 ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
}
##接下来登录(失败的话本地做hosts解析)
[root@docker02 ~]# docker login blog. com
7.打标签、推送测试
[root@docker02 ~]#docker tag docker.io/mysql:5.7 blog.com/sunfuyang/docker-mysql5.7:v1
[root@docker02 ~]# docker push blog.oldqiang.com/oldzhang/docker-mysql5.7:v1
##本地推送前的镜像大小是386M,推送到harbor里面大小变成了128.24MB。这是因为harbor帮我们做了压缩
4.harbor镜像迁移
把02机器上registry仓库里的镜像迁移到01机器上的harbor上(其实就是复制)
1.打开https://blog.com/
点击仓库管理-新建目标-提供者选择Docker Registry

然后点击复制管理-新建规则-填写相关信息后点击保存
选中规则名称,点击复制—镜像就被复制到harbor仓库了
只要硬盘空间足够大,甚至可以用这种方法把官方镜像同步过来
未经允许不得转载:孙某某的运维之路 » 5.docker的私有镜像仓库
评论已关闭