一. 部署 Docker-Compose 服务
部署 Harbor 是需要 Docker-Compose 服务做支撑的,所以要先部署该服务。
1.下载docker和Docker-Compose
yum install -y yum-utils device-mapper-persistent-data lvm2
wget -O /etc/yum.repos.d/aliyun.base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.09.9-3.el7
# 启动docker,并设置docker开机自启
systemctl start docker && systemctl enable docker
# 配置加速,并设置驱动
cat << EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
# 加载daemon并重启docker
systemctl daemon-reload && systemctl restart docker
root@Harbor ~# sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#网慢的话可能访问不到
离线下载包:
下载地址:https://github.com/docker/compose/releases
root@Harbor ~# mv docker-compose-Linux-x86_64 /usr/bin/docker-compose
root@Harbor ~# chmod +x /usr/bin/docker-compose
2.查看 Docker-Compose 版本判断安装是否成功
root@Harbor ~# docker-compose -v
docker-compose version 1.21.1, build 5a3f1a3
二. 部署Harbor 服务
Harbor 被部署为多个 Docker 容器,因此可以部署在任何支持 Docker 的 Linux 发行版上。服务端主机需要安装 Python、Docker 和 Docker Compose。
1.下载 Harbor 安装程序
##如果访问不到,将网址复制到浏览器上,下载的会比较慢
root@Harbor ~# wget http://github.com/vmware/harbor/releases/download/v2.0.2/harbor-offline-installer-v2.0.2.tgz
root@Harbor ~# tar xvf harbor-offline-installer-v2.0.2.tgz -C /usr/local/
2.配置 Harbor 参数文件
配置参数位于文件/usr/local/harbor/harbor.cfg 中。安装之前需要修改 IP 地址(本机的IP)。
root@Harbor ~# cd /usr/local/harbor/
[root@localhost harbor]# cp harbor.yml.tmpl harbor.yml
[root@localhost harbor]# vim harbor.yml
hostname = harbor-aliyun.junran-sh.com #根据实际情况定义(IP或域名)
注释掉ssl
#port: 443
#certificate: /your/certificate/path
#private_key: /your/private/key/path
3.启动 Harbor
root@Harbor harbor# sh /usr/local/harbor/install.sh
4.查看 Harbor 启动镜像
root@Harbor harbor# docker-compose ps
如果一切都正常,应该可以打开浏览器访问 http://192.168.10.1 的管理页面,默认的管理员用户名和密码是 admin/Harbor12345。如图 2.5 所示,说明部署成功。
至此,Harbor 已经搭建完成,具体在 WEB UI 界面操作也比较简单。
5.创建一个新项目
在 WEB UI 界面创建新项目的操作步骤如下。
(1)输入用户名和密码登录界面后可以创建一个新项目。点击“+新建项目”按钮,如图 2.6 所示。
(2)填写项目名称为“myproject-kgc”,如图 2.7 所示。
(3)点击“确定”按钮,成功创建新项目后,页面效果如图 2.8 所示。
(4)此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,
Register 服务器在端口 80 上侦听。
##添加镜像加速
cat << EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
[root@localhost harbor]# systemctl restart docker
[root@localhost harbor]# vim /etc/hosts
192.168.10.1 harbor-aliyun.junran-sh.com
(5)登录 Harbor。
root@Harbor ~# docker login -u admin -p Harbor12345 http://127.0.0.1
(6)下载镜像进行测试。
root@Harbor ~# docker pull cirros
(7)将镜像打标签。 IP地址/项目地址/镜像名称
root@Harbor ~# docker tag cirros 127.0.0.1/myproject-kgc/cirros:v1
(8)上传镜像到 Harbor。
root@Harbor ~# docker push 127.0.0.1/myproject-kgc/cirros:v1
(9)在 Harbor 界面 myproject-kgc 目录下可看见此镜像及相关信息,如图 2.9 所示。
6.客户端上传镜像
以上操作都是在 Harbor 服务器本地操作。如果其他客户端上传镜像到 Harbor,就会报如下错误。出现这问题的原因 Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。
root@client ~# docker login -u admin -p Harbor12345 http://192.168.10.1
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Errorresponsefromdaemon:Gethttps://192.168.10.1/v2/:dialtcp192.168.168.10.1:
getsockopt: connection refused
(1)在 Docker 客户端配置操作
解决办法是:在 Docker server 启动的时候,增加启动参数,默认使用 HTTP 访问。
[root@client ~]# vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://r9xxm8z8.mirror.aliyuncs.com"],
"insecure-registries":["192.168.10.1"]
}
(2)重启 Docker,再次登录
root@client ~# systemctl daemon-reload
root@client ~# systemcl restart docker
(3)再次登录 Harbor 因为CPU和内存导致harbor关闭,导致客户端连不上,报502
root@client ~# docker login -u admin -p Harbor12345 http://192.168.10.1
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded
(4)下载镜像进行测试
root@client ~# docker pull cirros
(5)镜像打标签及上传到 myproject-kgc 项目里面
root@client ~# docker tag cirros 192.168.168.91/myproject-kgc/cirros:v2
root@client ~# docker push 192.168.168.91/myproject-kgc/cirros:v2
(6)查看 Harbor 的 Web 管理界面
myproject-kgc 项目里面有两个镜像,如图 2.10 所示。
2.8.3 Harbor 日常操作管理
在 Harbor 仓库中,任何镜像在被 push 到 regsitry 之前都必须有一个自己所属的项目。
1.通过 Harbor Web 创建项目
单击“+项目”,填写项目名称。本章案例中项目级别设置为"私有",即不勾选,如图 2.6 和图 2.7 所示。如果设置为公共仓库,则所有人对此项目下的镜像拥有读权限,命令行中不需要执行"Docker login"即可下载镜像,镜像操作与 Docker Hub 一致。
2.创建 Harbor 用户
下面是创建 Harbor 用户的操作。
(1)创建用户并分配权限
在 Web 管理界面中单击系统管理->用户管理->+用户,填写用户名为“kgc-user01”,邮箱为 kgc-user01@kgc.cn,全名为“课超新人”,密码为“A123a456”,注释为“管理员”,如图 2.11
所示。
用户创建成功后,单击左侧“...”按钮可将上述创建的用户设置为管理员角色或进行删除操作
(2)添加项目成员
单击项目->myproject-kgc->成员->+用户,填写上述创建的用户并分配角色为“开发人
员”,如图 2.13 所示。
此时单击左侧“...”按钮仍然可对成员角色进行变更或者删除操作,如图 2.14 所示。
3)在客户端上使用普通账户操作镜像
①删除上述打标签的本地镜像。
root@client ~# docker rmi 192.168.10.1/myproject-kgc/cirros:v2
②先退出当前用户,然后使用上述创建的账户 kgc-user01 登录。
root@client ~# docker logout 192.168.10.1
Removing login credentials for 192.168.10.1
root@client ~# docker login 192.168.10.1
Username: kgc-user01
Password:
Login Succeeded
③下载服务器 192.168.168.91/myproject-kgc/cirros 标签为 v1 的镜像。
root@client ~# docker pull 192.168.10.1/myproject-kgc/cirros:v1
v1: Pulling from myproject-kgc/cirros
Digest: sha256:3fd64cb391e075e9e7335392aaa89d18029aafe5ca24cc123545c7b8c9c1d59c
Status: Downloaded newr image for 192.168.10.1/myproject-kgc/cirros:v1
3.查看日志
Web 界面日志,操作日志按时间顺序记录用户相关操作,如图 2.15 所示。
2.8.4 维护管理 Harbor
可以使用 docker-compose 管理 Harbor。一些有用的命令如下所示, 必须在与 docker-compose.yml 相同的目录中运行。
1.停止/启动/重启 Harbor
root@Harbor# cd /usr/local/harbor
root@Harbor Harbor# docker-compose stop | start | restart
2.修改 Harbor.cfg 配置文件
要更改 Harbour 的配置文件时,请先停止现有的 Harbour 实例并更新 Harbor.cfg;然后运行 prepare 脚本来填充配置;最后重新创建并启动 Harbour 的实例。
root@Harbor Harbor# docker-compose down -v
root@Harbor Harbor# vi harbor.cfg
root@Harbor Harbor#./prepare
root@Harbor Harbor# docker-compose up -d
3.移除 Harbor 服务容器同时保留镜像数据/数据库
root@Harbor Harbor# docker-compose down -v
4.如需重新部署,需要移除 Harbor 服务容器全部数据持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的/var/log/Harbor/目录下。
root@Harbor ~# rm -r /data/database
root@Harbor ~# rm -r /data/registry
目前,微服务架构也在潜移默化的改变着应用的部署方式,其提倡将应用分割成一系列细小的服务,每个服务专注于单一业务功能,服务之间采用轻量级通信机制相互沟通。同时, 数据库解决方案也在发生变化,多种持久化混合方案提倡将数据存放在最适合的数据库解决方案中,而传统的数据库解决方案将数据存在同一个数据库服务中。服务数量的增加也就意味着容器数量的增多,逐渐增加的容器数量为容器部署、运行及管理带来了挑战。Docker Compose 的出现解决多个容器部署的问题并提高了多个容器解决方案的可移植性。
Docker 官方镜像仓库是一个用于管理公共镜像的地方,用户可以在上面找到想要的镜像,也可以把自己的镜像推送上去。但是,有时候服务器无法访问互联网,或者不希望将自己的镜像放到互联网上,那么就需要用到 Docker Registry 私有仓库,它可以用来存储和管理自己的镜像。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。