简介:docker有三个核心,仓库(register)、镜像(image)、容器(container),仓库我们一般使用私有库harbor;镜像我们使用Dockerfile自己打包/或者使用docker save和docker load 打包镜像,导入镜像;容器(手动就是docker run ,多容器的话那就docker-compose,但是他是单机容器编排,后面再细说)
今天和大家分享的是docker仓库-Harbor的实战部署
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。(安全)
前提条件:
部署Harbor需要在docker 环境下,且需要docker-compose,这里我选择的版本是docker version:20.10.12 docker-compose version :2.2.2 harbor version:2.1.0
安装步骤(已经装有相应版本的docker):
1.下载docker-compose,在github上下载【下载链接】docker-compose GitHub,下载完后记得把名字改一下,最好改为docker-compose,然后通过ssh工具上传到服务器上 /usr/local/bin目录下,然后赋予执行权限
Chmod +x /usr/local/bin/docker-compose
然后查看下,是否安装成功,若显示版本号,则安装成功。
docker-compose –-version
2.在github上下载harbor_offline的安装包:【下载链接】Harbor GitHub
然后创建一个目录 /data/install/harbor-offline-installer/harbor
mkdir /data/install/harbor-offline-installer/harbor
然后把安装包通过ssh,上传到/data/install/harbor-offline-installer/harbor目录下
然后对tar包进行解压
tar -zxvf harbor-offline-installer-v2.1.0.tgz
然后修改harbor的配置,把http的端口改为自己想要映射的端口,hostname改为ip地址
vim harbor.yml.tmpl
然后,我们还需要把data的volume挂载到新的目录下面,不然存储数据的目录,就会分散开,杂乱无章,很容易找不到数据(这个也是在 harbor.yml.tmpl中更改)
注意:harbor的V2.1.0版本有个需要注意的地方,就是他没有harbor.cfg文件了,所以我们需要手动设置,复制一下
cp harbor.yml.tmpl harbor.yml
然后我们在执行这两个命令,(要在当前目录下,即/data/install/harbor-offline-installer/harbor下执行)
./prepare
./install.sh
然后,我们就可以看到Harbor部署成功了。因为我的服务器是在阿里云上,所以我们还需要去登录阿里云,然后找到安全组,把我们harbor映射的端口开放下,这下我们就可以从外网访问harbor了
现在我们通过浏览器,输入ip:端口访问我们的harbor,登录成功后,可以修改我们的默认密码
如果我们想要在服务器中登录harbor,即输入命令 docker login ip:端口
docker登录harbor常见报错:
解决方法:
cd /etc/docker
看这个目录下有没有daemon.json 这个文件,如果没有就手动创建 touch daemon.json
然后 vim daemon.json
在里面写入
{ "insecure-registries":["ip:端口"] } #这里填入的就是你的harbor ip和端口
然后重启下docker服务
Systemctl restart docker
然后把docker 容器都起来
docker start container ID
登陆成功后,我们就可以上传镜像到harbor仓库了
这里我们要先给之前原有的镜像打上标签,例如
docker tag java:8-jdk localregistry.example:6666/library/java:8-jdk-v1
#这里的java:8-jdk是原有的镜像名:标签名,
#我们如果要上传给harbor的话要给这个镜像打上新的标签,
#标签名的语法就是harbor的ip:端口/新的镜像名:新的标签名
成功打上标签后,我们可以 docker images查看下,是不是镜像打上来了
镜像成功打上新的标签后,我们就可以把镜像push到harbor仓库了
docker push harbor-ip:端口/library/nginx:test-latest #上传镜像至远程仓库
#harbor-ip:端口/library/nginx:test-latest 这个就是你要上传的镜像的新的镜像名:新的标签名
服务器想要从harbor上下载上传的镜像的时候,只需要先登录harbor,再pull即可下载harbor镜像到本地
docker login ip:端口 #登录harbor
docker pull ip:端口/library/nginx:test-latest #ip:端口/library/nginx:test-latest 这个就是你要下载的在harbor上的镜像的名字:标签名
新人创作不易,觉得不错的看官,点个赞吧,么么哒!!!
转载注明出处!