容器技术:Harbor镜像仓库部署(七)
镜像仓库-Harbor
1. 安装Docker、Docker-Compose
Harbor的所有服务组件都是在Docker中部署的,所以官方安装使用Docker-compose快速部署,所以我们需要安装Docker、Docker-compose。由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0。
安装一些依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
也可以安装一下代码补全插件:yum install -y bash-completion bash-completion-extras
下载 repo 文件,并把软件仓库地址替换为镜像站
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
安装docker-ce
yum install docker-ce
安装指定版本的Docker-CE
#查找Docker-CE的版本
yum list docker-ce.x86_64 --showduplicates | sort -r
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror, langpacks
docker-ce.x86_64 3:23.0.3-1.el7 docker-ce-stable
docker-ce.x86_64 3:20.10.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable
#例如安装18.06.3.ce-3.el7这个版本
yum -y install docker-ce-18.06.3.ce-3.el7
配置镜像加速,编辑配置文件。
mkdir /etc/docker/
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": [
"https://k313isum.mirror.aliyuncs.com"
]
}
EOF
启动docker并设置开机自启
systemctl daemon-reload
systemctl start docker
systemctl enable docker
配置内核转发功能
临时性:
echo 1 > /proc/sys/net/ipv4/ip_forward
永久性:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
#立即生效
sysctl -p
在安装 Docker Compose 之前,请确保你的机器已经正确运行了 Docker,一般安装docker时就会把docker compose一起安装了,如果执行docker-compose -v
没有出现信息,则需要下载。
可在github上下载最新版本 https://github.com/docker/compose/releases
下面以下载v2.17.2为例
#从github上下载
wget https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64
#赋予执行权限
chmod +x docker-compose-linux-x86_64
#有则覆盖
mv docker-compose-linux-x86_64 /usr/bin/docker-compose
#检查docker-compose的版本的信息,当我们执行完下面命令后,如果 Docker Compose 输出了当前版本号,就表示我们的 Docker Compose 已经安装成功。
docker-compose -v
2. 下载并配置Harbor
下载地址:https://github.com/goharbor/harbor/releases ,本次以v2.3.1版本为例,先下载harbor-offline-installer-v2.3.1.tgz到主机上。
#创建目录
mkdir /soft
#解压软件包
tar xf harbor-offline-installer-v2.3.1.tgz -C /soft/
#进入harbor目录
cd /soft/harbor
修改配置文件内容如下,主要是配置hostsname、http和harbor_admin_password,其他保持默认即可。
- 检测80端口是否被占用:
netstat -tunlp|grep 80
,若使用其它端口,需修改端口号。
# egrep -v '#|^$' harbor.yml
hostname: 10.0.0.190
http:
port: 80
harbor_admin_password: 123456
database:
password: root123
max_idle_conns: 100
max_open_conns: 900
data_volume: /data
trivy:
ignore_unfixed: false
skip_update: false
insecure: false
jobservice:
max_job_workers: 10
notification:
webhook_job_max_retry: 10
chart:
absolute_url: disabled
log:
level: info
local:
rotate_count: 50
rotate_size: 200M
location: /var/log/harbor
_version: 2.3.0
proxy:
http_proxy:
https_proxy:
no_proxy:
components:
- core
- jobservice
- trivy
在harbor目录下进行安装
./install.sh
安装成功后,在浏览器上访问10.0.0.190即可访问到harbor。账号admin、密码为上面配置所配置的密码。
配置开机自启动文件
cat > /usr/lib/systemd/system/harbor.service <<EOF
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
#注意docker-compose和harbor的安装位置
ExecStart=/usr/bin/docker-compose -f /soft/harbor/docker-compose.yml up
ExecStop=/usr/bin/docker-compose -f /soft/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target
EOF
加载Systemd配置,并设置开机自启动。
#手动停止
/usr/bin/docker-compose -f /soft/harbor/docker-compose.yml down
#加载配置和设置开机自启
systemctl daemon-reload
systemctl enable harbor.service
#启动Harbor
systemctl start harbor.service
3. 推送镜像到Harbor
添加一个用户,创建一个yinjay项目,并把该用户添加到该项目中。
在docker01主机上进行拉取官方镜像,然后推送到Harbor本地仓库中。
#拉取官方镜像
docker pull nginx:1.15.2
#查看镜像
# docker images | grep nginx
nginx 1.15.2 c82521676580 5 years ago 109MB
默认推送是https,通过配置 insecure-registries
,可以告诉 Docker 某个仓库是不安全的,并允许 Docker 客户端与之进行通信,即便仓库使用的是不受信任的证书。(默认为80,不加端口)
# cat /etc/docker/daemon.json
{
"registry-mirrors": [
"https://k313isum.mirror.aliyuncs.com"
],
"insecure-registries": ["10.0.0.190"]
}
systemctl restart docker
进行docker login,才能有权限进行推送。
#格式:docker login Harbor地址 -u Harbor用户 -p Harbor用户密码
docker login 10.0.0.190 -u YinJay -p Huawei@123
对镜像进行打上tag,并推送。
#打tag格式:docekr tag 镜像名称:标签 你的IP(域名):端口/项目名称/镜像名称:标签
docker tag nginx:1.15.2 10.0.0.190/yinjay/nginx:1.15.2
#推送镜像格式:docker push 你的IP(域名):端口/项目名称/镜像名称:标签
docker push 10.0.0.190/nginx/nginx:1.15.2
拉取镜像
#拉取镜像格式:docker pull 你的IP(域名):端口/项目名称/镜像名称:标签
docker pull 10.0.0.190/nginx/nginx:1.15.2