Docker私有仓库的搭建
平时我们执行docker pull xxx
的时候都是从默认的公共仓库下载镜像,实际在工作中,我们不能把企业项目push到公共仓库,所以为了更好的管理镜像,搭建一个本地的私有仓库也很有必要,这里主要介绍两种方式搭建私有仓库。
一、registry搭建
1、搭建
Docker官方有提供搭建私有仓库的基础镜像registry,直接下载运行容器即可,注意容器默认使用的是5000端口,需要映射出去;默认将上传的镜像保存在容器内的/var/lib/registry目录下,需要将此目录映射到主机上,避免数据丢失。
docker search registry
docker pull registry:latest
docker run -d -v /usr/local/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:latest
浏览器访问http://{ip}:5000/v2,我是安装在虚拟机上,访问http://192.168.2.17:5000/v2
即安装完成!
2、使用验证
将本地镜像push到私有仓库中来验证一下
查看本地镜像:docker images
,我们选择将postgres镜像push
要通过docker tag
将该镜像标志为要推送到私有仓库
docker tag postgres:11.8 localhost:5000/postgres:11.8
然后通过docker push
将标记后的镜像推送至私有仓库
docker push localhost:5000/postgres:11.8
之后访问http://192.168.2.17:5000/v2/_catalog查看私有仓库目录,确认是否上传成功:
二、harbor的搭建
上述方法虽然简单,但是在管理的功能上还有些不足,为此Docker官方还提供一个Harbor的服务,是一个用于存储和分发Docker镜像的企业级Registry服务器,增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。
1、搭建
- 安装要求
服务器上要先安装好docker和docker-compose,对于v2.1.0版本的要求文档中有要求说明,docker-compose的安装和介绍会再做说明
-
下载
地址为: https://github.com/goharbor/harbor/releases ,本文下载的是v2.1.0 -
安装配置
先vim /etc/docker/daemon.json
,添加{ "insecure-registries":["192.168.2.17:9090"] },写上自己的ip,若没有这个文件则新建一个,然后再继续后面的按照,否则登录时可能会出现报错,修改完之后重启docker:systemctl restart docker
[NOTE]
由于从docker1.3.2版本开始,使用registry时,必须使用TLS保证其安全。我们不用https的话,需要在客户机中增加一个配置文件将下载好的安装包harbor-offline-installer-v2.1.0.tgz上传服务器并解压
tar -xvf harbor-offline-installer-v2.1.0.tgz
创建配置文件,
cp harbor.yml.tmpl harbor.yml
修改配置,vim harbor.ym
,主要修改http选项中的ip和端口进行安装,
./prepare
&&./install.sh
最后显示"✔ ----Harbor has been installed and started successfully.----"安装成功,执行docker ps
查看运行的容器查看安装完成后的目录结构
安装完成后有生成docker-compose.yml文件,后续的服务的启停等操作可以用docker-compose命令,如停止服务
docker-compose down
,启动服务docker-compose up -d
等
2、登录验证
-
访问设置好的ip和端口,我的是http://192.168.2.17:9090
-
登录,默认的admin用户密码是Harbor12345,也可以在安装的时候通过修改harbor.yml文件来更改。
可以创建项目,创建用户,给项目分配用户等等,操作都很简单 。
3、上传镜像
-
首先要登陆私有仓库,可以使用admin或者创建好的拥有对应权限的用户
docker login -u admin -p Harbor12345 192.168.2.17:9090
-
上传自己的镜像
docker tag postgres:11.8 192.168.2.17:9090/library/postgres:11.8
,其中library是项目名称,可以自己创建,我用的是默认的
docker push 192.168.2.17:9090/library/postgres:11.8
[NOTE]
若之前没有配置/etc/docker/daemon.json文件的话,这一步可能会出现报错:Error response from daemon: Get https://192.168.2.17:9090/v2/: http: server gave HTTP response to HTTPS client登录网页查看
至此完成Harbor的简单部署!