0x00 环境部署
1.在银河麒麟(Kylin V10)国产服务操作系统快速安装Docker最新版本
描述: 此处作者准备了两台银河麒麟国产Linux服务器(PS: 国产化是趋势,作为运维打工人也应该紧跟政策)使用Docker容器来安装Gitlab代码仓库以及Harbor镜像仓库,以满足作者企业中GitOps的基础环境,所以首先第一步就是Docker环境的安装。
温馨提示: 若有不了解Docker容器的朋友可以参考作者的针对学习Docker所记录的学习之路系列笔记,关注【全栈工程师修炼指南】回复【Docker学习之路】
。
Step 1.安装 Docker 的两台麒麟服务器信息,此处作者已经将此主机进行了安全加固以满足等保三级主机安全的要求,有需求的朋友请在下方自取,加固后的麒麟系统登录界面如下所示:
代码语言:javascript复制[IP 地址] : 10.20.176.250 、 10.20.176.251
[System Info]
SYSTEM : Kylin Linux Advanced Server V10 (Lance)
KERNEL : Linux 4.19.90-52.25.v2207.ky10.x86_64
ARCH : x86_64
UPTIME : 0 days 0 hours 48 minutes 18 seconds
CPU : Intel(R) Xeon(R) CPU E7-4820 v4 @ 2.00GHz (8 vCPU)
MEMORY : 227 MB / 14749 MB (1.54% Used)
LOAD AVG : 0.00 (1m), 0.00 (5m), 0.00 (15m)
PROCESSES : 194 (root), 3 (user), 197 (total)
USERS : 1 users logged in
BASH : 5.0.18(1)-release
[Disk Usage]
Mounted: / 3.0G / 98G (4% Used)
[============================================================]
Mounted: /boot 280M / 1014M (28% Used)
[============================================================]
安全加固脚本: 【网安等保-国产Linux操作系统银河麒麟KylinOS-V10SP3常规配置、系统优化与安全加固基线实践文档】 安全加固视频: 【网安等保主机安全之KylinOS服务器配置优化与安全加固视频】
Step 2.移除系统中可能已经安装的Docker旧版本及其相关依赖组件包,并将官方安装源加入到yum仓库中。
代码语言:javascript复制# 移除旧版本及其依赖
sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
# 官方安装源
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 使用CentOS8版本源(KylinOS 实际上与CentOS8类似,所以使用其源是没有问题的,作者实测过)
echo "8" > /etc/yum/vars/centos_version
sed -i 's/$releasever/$centos_version/g' /etc/yum.repos.d/docker-ce.repo
Step 3.安装最新的或者指定版本Docker及相关组件。
代码语言:javascript复制# 方式1.安装最新版本(根据需求选择)
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 方式2.浏览可用版本并安装指定版本(生产环境中推荐)
dnf list [软件名] --showduplicates | sort -r | head -n 2
dnf install docker-ce-3:24.0.4-1.el8 docker-ce-cli-1:24.0.4-1.el8 containerd.io-1.6.9-3.1.el8 -y
温馨提示: 若需在执行安装过程中出现如下相似的依赖错误,可以在 /etc/yum.repos.d/docker-ce.repo
文件中添加若下所示的[centos-extras]
片段。
错误信息:
- nothing provides slirp4netns >= 0.4 needed by docker-ce-rootless-extras-24.0.3-1.el8.x86_64
- nothing provides fuse-overlayfs >= 0.7 needed by docker-ce-rootless-extras-24.0.4-1.el8.x86_64
- nothing provides slirp4netns >= 0.4 needed by docker-ce-rootless-extras-24.0.4-1.el8.x86_64
解决版本: 将下述片段加入到/etc/yum.repos.d/docker-ce.repo
文件头部,然后执行yum update && yum install slirp4netns fuse-overlayfs
即可,如果是使用作者提供的安全加固脚本作系统基础镜像的可使用此方式解决,若出现其他错误请自行Google。
[centos-extras]
name=Centos extras - $basearch
baseurl=http://mirror.centos.org/centos/7/extras/x86_64
enabled=1
gpgcheck=0
Step 4.Docker Deamon 配置文件示例。
代码语言:javascript复制# 配置docker后台守护进程
mkdir -vp /etc/docker/
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"data-root":"/var/lib/docker",
"registry-mirrors": ["https://xlx9erfu.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "100m",
"max-file": "10"
},
"live-restore": true,
"dns": ["223.6.6.6","223.6.6.6"],
"insecure-registries": [ "harbor.weiyigeek.top"]
}
EOF
# 重载守护进程
sudo systemctl daemon-reload
Step 5.启动Docker服务及自启动配置。
代码语言:javascript复制# 设置自动启动即重启Docker服务
sudo systemctl enable docker.service
sudo systemctl restart docker.service
# 查看Docker服务状态
systemctl status docker.service --no-pager -l
Step 6.启动一个 hello-world 容器,验证docker是否正常工作。
代码语言:javascript复制# banb
docker info
docker run --rm hello-world
偷偷的告诉你哟?【极客全栈修炼】微信小程序已开放
可直接在微信里面直接浏览博主文章哟,后续将上线更多有趣的小工具。
Step 7.此外为了部署后面的项目,我们还需要Docker的另外一个小伙伴Docker-compose,方便我们基于配置清单的方式来部署容器,快速安装最新版本的Docker-compose操作如下
Github 项目地址: https://github.com/docker/compose/releases/
代码语言:javascript复制# 1.Default New Version v2.20.2 (2023年7月19日 17:11:06)
DOCKER_COMPOSE_VERSION=v2.20.2
# 2.Download、Install Docker-Compose
curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION:="v2.16.0"}/docker-compose-"$(uname -s)"-"$(uname -m)" -o /usr/local/bin/docker-compose
chmod x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 3.Verify Install
docker-compose version
在KylinOS银河麒麟使用Docker快速安装最新版本的Harbor
描述: Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全, 提升用户使用Registry构建和运行环境传输镜像的效率。
项目官网: https://goharbor.io/docs 项目地址: https://github.com/goharbor/harbor/releases
安装部署流程: Step 1.前置准备工作,首先我们需要准备持久化目录以及在Gitub中提前下载Harbor离线安装包,由于国内环境原因下载直接比较慢,建议使用某雷下载(PS: 终极开会员)。
代码语言:javascript复制# 创建持久化目录
HARBOR_INSTALL=/srv/harbor
HARBOR_CONFIG=/etc/harbor
HARBOR_DATA=/harbor/data
mkdir -vp ${HARBOR_DATA} ${HARBOR_INSTALL} ${HARBOR_CONFIG}/ssl
# 下载harbor离线安装包
HARBOR_VERSION=v2.8.2; HARBOR_PACKAGE=offline
HARBOR_DOWNLOAD="https://github.com/goharbor/harbor/releases/download/${HARBOR_VERSION}/harbor-${HARBOR_PACKAGE}-installer-${HARBOR_VERSION}.tgz"
wget -L ${HARBOR_DOWNLOAD} -O /tmp/harbor-${HARBOR_PACKAGE}-installer-${HARBOR_VERSION}.tgz
# 解压到指定目录
tar xzvf /tmp/harbor-${HARBOR_PACKAGE}-installer-${HARBOR_VERSION}.tgz -C /srv
Step 2.同样,我们也需要准备私有化部署的harbor证书,你可以选择自签(测试环境推荐没有买域名时)或者在腾讯云、阿里云中申请免费的证书(生产环境推荐,需要有自己的域名)
或者购买的泛域名证书(生产环境推荐)都是可以的, 此处作者喜欢不用花钱的简单的所以就选择第二种方式,此处作者已经提前准备好harbor所需的ca证书、SSL证书与私钥
。
腾讯云免费SSL证书申请地址: https://cloud.tencent.com/act/cps/redirect?redirect=10019&cps_key=b33075ae5a2baf3b47e7456ee5821502
提交申请之后大约5~10分钟的样子即可,签发下来此时在证书后点击下载根证书下载(crt文件)以及 Nginx(适用大部分场景)(pem文件、crt文件、key文件),并上传至服务器使用unzip解压,注意此处与上面安装gitlab时不同需要下载CA证书(根证书)后续在客户端连接仓库认证中会使用到。
代码语言:javascript复制$ unzip harbor.weiyigeek.top_nginx.zip
$ unzip harbor.weiyigeek.top_root.zip
# 将证书放入到持久化目录中
cp harbor.weiyigeek.top_root/harbor.weiyigeek.top_root.crt ${HARBOR_CONFIG}/ssl/ca.crt
cp harbor.weiyigeek.top_nginx/harbor.weiyigeek.top_bundle.crt ${HARBOR_CONFIG}/ssl/harbor.crt
cp harbor.weiyigeek.top_nginx/harbor.weiyigeek.top.key ${HARBOR_CONFIG}/ssl/harbor.key
# 证书目录权限设置
sudo chmod 755 ${HARBOR_CONFIG}/ssl
自签证书流程官方文档: https://goharbor.io/docs/2.8.0/install-config/configure-https/
Step 3.根据实际情况进行配置harbor的安装部署清单
代码语言:javascript复制pwd && ls
# /srv/harbor
# common.sh harbor.v2.8.2.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
# 拷贝示例文件到harbor.yml
cp harbor.yml.tmpl harbor.yml
# 作者的harbor配置示例,请根据实际情况进行更改域名、证书以及密码等相关参数。
egrep -v "^#|^ #|#" harbor.yml | sed '/^$/d'
hostname: harbor.weiyigeek.top
http:
port: 80
https:
port: 443
certificate: /etc/harbor/ssl/harbor.crt
private_key: /etc/harbor/ssl/harbor.key
harbor_admin_password: Harbor12345
database:
password: PostgreSQL12345
max_idle_conns: 100
max_open_conns: 900
conn_max_lifetime: 5m
conn_max_idle_time: 0
data_volume: /harbor/data
trivy:
ignore_unfixed: false
skip_update: false
offline_scan: false
security_check: vuln
insecure: false
jobservice:
max_job_workers: 10
notification:
webhook_job_max_retry: 3
log:
level: info
local:
rotate_count: 30
rotate_size: 200M
location: /var/log/harbor
_version: 2.8.0
proxy:
http_proxy:
https_proxy:
no_proxy:
components:
- core
- jobservice
- trivy
metric:
enabled: false
port: 9090
path: /metrics
upload_purging:
enabled: true
age: 168h
interval: 24h
dryrun: false
cache:
enabled: false
expire_hours: 24
Step 3.执行/install.sh
脚本并指定安装参数并将Harbor部署到系统中。
在 Harbor 部署v2.8.2时,--with-notary、--with-clair和--with-trivy
都是安装Harbor时可以选择的参数,它们的作用如下:
代码语言:javascript复制with-notary:启用数字签名验证和证书管理功能,确保软件包和镜像的完整性和安全性。 with-clair:启用容器镜像分析功能,可以帮助用户发现并报告潜在的安全漏洞和错误配置,提高镜像的安全性(
已被丢弃,deprecated
)。 with-trivy:启用容器镜像扫描功能,可以检测镜像中的潜在漏洞和配置错误,并提供相关的修复建议,提高镜像的安全性和质量。
$ sudo ./install.sh --with-trivy
[Step 0]: checking if docker is installed ...
[Step 1]: checking docker-compose is installed ...
[Step 2]: loading Harbor images ...
[Step 3]: preparing environment ...
[Step 4]: preparing harbor configs ...
Note: stopping existing Harbor instance ...
[Step 5]: starting Harbor ...
[ ] Running 11/11
✔ Network harbor_harbor Created 0.1s
✔ Container harbor-log Started 0.4s
✔ Container registry Started 0.7s
✔ Container redis Started 1.0s
✔ Container harbor-db Started 1.0s
✔ Container harbor-portal Started 0.8s
✔ Container registryctl Started 0.9s
✔ Container trivy-adapter Started 1.4s
✔ Container harbor-core Started 1.5s
✔ Container harbor-jobservice Started 1.7s
✔ Container nginx Started 1.9s
✔ ----Harbor has been installed and started successfully.----
Step 4.执行docker ps
命令查看Harbor各组件的健康状态。
docker ps --format 'table {{.ID}} {{.Names}} {{.Status}}'
# CONTAINER ID NAMES STATUS
# 1f7214a9e933 nginx Up 8 minutes (healthy)
# ce80b2b282dd harbor-jobservice Up 8 minutes (healthy)
# 59827eb0a868 harbor-core Up 8 minutes (healthy)
# 58158ec9905e trivy-adapter Up 8 minutes (healthy)
# fc616e986470 harbor-db Up 8 minutes (healthy)
# ce555c4024a8 harbor-portal Up 8 minutes (healthy)
# f9038a2dee08 registryctl Up 8 minutes (healthy)
# d53dcd2cd8a4 registry Up 8 minutes (healthy)
# f832561ab64b redis Up 8 minutes (healthy)
# 71df4129859c harbor-log Up 8 minutes (healthy)
Step 5.使用浏览器访问部署的Harbor代码仓库后台界面,使用 admin/Harbor12345
默认账号密码进行登录访问验证,登录后界面以及版本号(v2.8.2-d4c34dcc
)如下所示
至此,在KylinOS中使用docker快速安装Harbor完毕.
本文至此完毕,更多技术文章,尽情等待下篇好文!
原文地址: https://blog.weiyigeek.top