Docker运维教程(7)私有镜像仓库的部署与使用
一、为什么要部署私有镜像仓库
虽然Docker官方提供了一个Docker Hub作为公共镜像仓库,使用方便,里面镜像也足够丰富。但是存在访问速度慢、镜像安全性无法确定的问题,可以通过搭建本地私有仓库的方式来解决这些问题。私有镜像仓库的部署方式可以通过registry或者harbor来实现,由于harbor还提供了丰富的web界面,管理更方便,所以也是现在主流的私有镜像仓库部署方式,其他方式作为了解即可。
二、如何部署Docker私有镜像仓库
1、docker-distribution方式(老版本也叫docker-registry)
· 安装 docker-distribution
#使用yum安装 yum install docker-distribution systemctl start docker-distribution #使用registry官方镜像安装 docker run -d -p 5000:5000 -v /docker_registry:/var/lib/registry registry:2
· 配置 docker-distribution
如果是使用yum安装,Docker registry的主配置文件是/etc/docker-distribution/registry/config.yml,其中可以定义服务的名字(service),仓库的路径(rootdirectory)、端口(addr)
· 推送本地镜像到仓库
在进行push操作的时候要注意镜像的名字,镜像地址完整格式为[hostip]:[port]/[username]/xxx:tag,如果省略了[hostip]:[port]部分,则是默认推送到官方Docker Hub中。所以需要先将之前的镜像重命名,然后push到私有仓库中。推送成功后在仓库目录中可以看到镜像文件
docker image ls #先查询本地镜像 docker tag myweb:v1 node.linuxe.cn:5000/myweb:v1 #将本地镜像打标签,镜像名myweb前面没有带用户名代表是顶层仓库 docker push node02.linuxe.cn:5000/myweb:v1 #推送镜像到私有仓库 docker pull node02.linuxe.cn:5000/myweb:v1 #从私有仓库下载刚推送的镜像
· 信任镜像仓库
需要注意的是docker push命令默认是https客户端,而自建的仓库工作在http模式下,所以会出现http:server gave HTTP response to HTTPS clients的错误,所以需要在 Docker 客户端上信任该镜像仓库
vi /etc/docker/daemon.json insecure-registries": ["node02.linuxe.cn:5000"]" #增加一行配置,让docker客户端明确这个仓库是不安全的 systemctl restart docker
2、docker harbor方式
· 安装docker-compose
为了省去安装harbor繁琐的配置,官方将其做成了镜像,只不过需要单机编排工具compose来完成安装,所以在安装harbor实现web管理之前还要安装docker-compose
yum install docker-compose
· 下载Harbor
Harbor项目托管在Github上,在github.com/vmware/harbor可以看到Harbor的安装说明,包含离线安装还是在线安装、软硬件要求等。这里下载离线包为例进行安装,包比较大,500多M。
wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.0.tgz
· Harbor配置文件
下载完成后解压可以看到install.sh脚本和harbor.cfg配置文件,首先编辑配置文件harbor.cfg
vi harbor.cfg hostname = 域名或者IP ui_url_protocol = http #http协议,如果使用https协议的话hostname必须修改成证书对应域名 max_job_workers = 3 #处理用户上传下载的并发进程数 customize_crt = on #是否使用自定义证书,会自动调用openssl来生成证书 ssl_cert = /data/cert/server.crt #证书文件 ssl_cert_key = /data/cert/server.key #证书私钥 harbor_admin_password = Harbor12345 #默认管理密码 db_password = root123 #mysql初始密码
· 配置文件修改完成后运行install.sh以启动Harbor,该脚本会启动很多镜像,因为compose就是一个容器编排工具,使用以下命令可以查看具体compose具体做了什么
docker-compose ps
· install.sh脚本运行结束后会有443和80端口监听在本地用于访问到Harbor。这些端口可以通过修改docker-compose.yml中的ports部分实现自定义,前面的端口是宿主机监听的端口,后面是Docker中的端口。Harbor运行后的后续使用就是将本地镜像修改tag并push的过程。
docker push my.harbor.com/libray/mycentos #将mycentos镜像上传到仓库的libray项目中
· 如果修改了Harbor配置的话只需要重启docker-compose即可,因为Harbor是基于Compose来管理的
docker-compose stop docker-compose start
评论