版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liubingyu12345/article/details/80757878
前言
docker镜像的push、pull都需要镜像库。现在不少大厂提供免费的镜像库,如docker hub,163 hub,也可以自己搭建一个私有镜像库。我用了vmware公司开源的harbor作为docker私有库,相比docker官方提供的私有库registry,harbor提供了管理界面,还可以分配用户权限,适合企业级使用。这是harbor的地址.
harbor不是一个镜像,而是有多个镜像支撑,所以需要去官方手动下载一个installer,再在installker中的原始配置文件中配置好相应参数,再运行脚本生成镜像所需要的配置文件,最后通过docker-compose启动。
前置条件
OS: ubuntu 16
docker版本: 17
docker-compose版本: 1.21
搭建过程
下载installer
去这里 下载最新版本的harbor安装器,它分在线和离线两种包,我下载的时候,最新版本是1.5.1,还未提供在线包,所以下载了离线包。
下载成功后,在linux任意目录解压
1 | tar xvf harbor-offline-installer-<version>.tgz |
配置
解压出来后就是一个同名文件夹,里面有很多文件和文件夹,我们只需要配置两个文件harbor.cfg和docker-compose.yml。
harbor.cfg只要配置如下一个地方
1 | #The IP address or hostname to access admin UI and registry service. |
harbor支持域名和ip两种方式,我用了简单的ip方式,还可以配置https访问。harbor.cfg中的ui_url_protocol属性设置为https。当然,https证书要自己做。具体可参考官网
docker-compose.yml主要是改下容器映射的端口,默认是把容器内的80端口映射到宿主机的80端口,现在改成映射宿主机的8090端口(我把容器其它往外映射的端口也改到宿主机上不常用端口上了)
然后执行install.sh,没问题的话,会生成配置文件和启动镜像。如果镜像未启动,则使用命令docker-compose up启动。
注意:如果后面想改harbor.cfg的内容并生效,单独重启容器是没用的,需要重新执行prepare后再启动容器,命令如下:
1 | $ sudo docker-compose down -v |
启动成功后,harbor会启动八个docker容器,看着有点多,但资源占的都不多。
然后浏览器打开http://ip:8090进入管理平台,默认密码是admin/Harbor12345。在管理平台,可以管理镜像和用户权限控制。
推送拉取镜像
推送
首先有一个spring boot项目,pom.xml文件添加如下内容:
1 | <properties> |
在项目主目录下写Dockerfile文件,内容如下:
1 | FROM java:8 |
我在ENTRYPOINT中设置了JVM堆内存参数是为了控制容器占内存太大。
执行mvn打包和打成镜像命令
1 | mvn clean package -DskipTests dockerfile:build |
dockerfile:build命令需要在安装docker的环境下执行
执行完毕后,当前机器通过sudo docker images就可以看到刚才打好的镜像,镜像名字是192.168.1.100:8090/demo/项目名。
先登录再执行镜像推送命令:
1 | sudo docker login --u admin -p Harbor12345 192.168.1.100:8090 |
拉取镜像
拉取镜像很简单
1 | sudo docker login -u admin -p Harbor12345 192.168.1.100:8090 |
harbor就这样搭建配置完成了。
遇到的问题
在docker login的时候会报这个错:http: server gave HTTP response to HTTPS client,这是因为Haror设置了http,docker客户端默认是https,需要改下本地docker环境
在/etc/docker/daemon.json(如果没有就新建)中添加以下代码:
1 | { "insecure-registries":["xx.xx.xx.xx:8090"] } |
1、如何配置 registry 私库相关的参数
涉及以下2个参数:
“insecure-registries”: [], #这个私库的服务地址
“registry-mirrors”: [], #私库加速器
2.配置示例:
1 | # cat /etc/docker/daemon.json |
配置与应用
1.默认没有文件,所以我们需要先创建,进入/etc/docker目录下,记得创建的文件所有者是root(vim或touch,记得chown修改所有者)
1 | -rw-r--r-- 1 root root 71 Dec 19 17:25daemon.json |
2.在文档中配置想要添加的参数:如,镜像加速器网站,私库网站
1 | # cat /etc/docker/daemon.json |
3.创建并修改完daemon.json文件后,需要让这个文件生效
a.修改完成后reload配置文件
sudo systemctl daemon-reload
b.重启docker服务
sudo systemctl restartdocker.service
c.查看状态
sudo systemctl status docker -l
d.查看服务
sudo docker info