记录:358
场景:在CentOS 7.9操作系统上,离线部署harbor容器镜像仓库单机版,使用Redis为外部缓存、使用PostgreSQL为外部数据库、使用docker-ce操作容器、使用docker-compose操作harbor容器镜像仓库。
版本:
操作系统:CentOS 7.9
Harbor版本:harbor-v2.3.5
docker-ce版本:docker-ce-19.03.15
docker-compose版本:docker-compose-v2.2.3
Redis版本:redis-6.2.4
PostgreSQL版本:PostgreSQL 13.4
1.主机规划
1.1主机基础配置
主机app166;内存:4GB;硬盘(SCSI):50GB;硬盘2(SCSI):40GB。
1.2主机安装软件规划
主机部署Harbor、docker-ce、docker-compose、Redis、PostgreSQ等软件规划。
1.3主机基础软件
(1)配置对应主机名称、hosts文件。
(2)关闭防火墙、关闭SELinux。
(3)配置离线本地镜像仓库。
(4)安装gcc高版本。
1.4配置br_netfilter
(1)加载内核模块
命令:modprobe br_netfilter
(2)配置参数
修改命令:vi /etc/sysctl.conf
修改内容:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
(3)参数生效
命令:sysctl -p
2.安装redis
2.1主机规划
目标:使用1台主机部署redis。
主机app166;IP:192.168.19.166。
2.2下载安装包
离线安装Redis集群,需要在公网机器下载包并拷贝到内网。
2.2.1下载redis-6.2.4.tar.gz
下载命令:wget http://download.redis.io/releases/redis-6.2.4.tar.gz
解析:下载完成后,redis-6.2.4.tar.gz包在当前目录。
2.2.2下载gcc依赖包
(1)下载gcc相关的rpm包
下载命令:yum install --downloadonly --downloaddir /home/mirror/gcc-rpm devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils gcc
(2)把下载包拷贝到内网机器制作成本地镜像
2.3安装gcc
(1)安装gcc
安装命令:yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils gcc
(2)配置gcc
内容:echo 'source /opt/rh/devtoolset-9/enable'>>/etc/profile
生效:source /etc/profile
(3)查看gcc版本
命令:gcc --version
打印信息:gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2)
2.4解压redis包到指定目录
命令:tar -xzvf /home/apps/software/redis-6.2.4.tar.gz -C /home/apps/module/
解析:解压后,Redis相关内容在/home/apps/module/redis-6.2.4。
2.5编译redis
操作目录:cd /home/apps/module/redis-6.2.4
编译命令:make -C /home/apps/module/redis-6.2.4
解析:编译redis后,在redis-6.2.4/src目录下生成.o文件和redis-server等文件,生成./deps文件夹。
2.6安装redis
安装redis到指定目录,默认是在/usr/local/。
操作目录:cd /home/apps/module/redis-6.2.4
安装命令:make install PREFIX=/home/apps/module/redis-6.2.4
解析:把redis-6.2.4指定安装在/home/apps/module/redis-6.2.4,会在此目录下生成bin目录。
2.7创建redis节点目录
部署一个单机版redis,端口号为27003。
配置目录:mkdir -p /home/apps/module/redis-single/node-27003/conf
数据目录:mkdir -p /home/apps/module/redis-single/node-27003/data
日志目录:mkdir -p /home/apps/module/redis-single/node-27003/log
运行目录:mkdir -p /home/apps/module/redis-single/node-27003/run
2.8拷贝redis配置到节点目录
从/home/apps/module/redis-6.2.4拷贝redis.conf配置文件到集群配置目录。
节点27003:cp -r /home/apps/module/redis-6.2.4/redis.conf /home/apps/module/redis-single/node-27003/conf/
2.9修改配置文件
在主机161操作。
修改命令:vi /home/apps/module/redis-single/node-27003/conf/redis.conf
修改内容:
port 27003
bind 192.168.19.166
daemonize yes
pidfile /home/apps/module/redis-single/node-27003/run/redis.pid
logfile "/home/apps/module/redis-single/node-27003/log/stdout.pid"
dir /home/apps/module/redis-single/node-27003/data
appendonly yes
masterauth <hang@123456>
requirepass hang@123456
#bind 127.0.0.1 -::1
2.10启动redis
2.10.1启动指令
操作目录:cd /home/apps/module/redis-6.2.4/bin
启动27003节点:/home/apps/module/redis-6.2.4/bin/redis-server /home/apps/module/redis-single/node-27003/conf/redis.conf
2.10.2查看监听端口
命令:netstat -atulnp | grep redis
3.安装PostgreSQL
3.1主机规划
目标:使用一台主机部署PostgreSQL数据库,为Harbor集群提供共享存储数据库。
主机app166;IP:192.168.19.166。
3.2下载安装包
下载命令:wget https://ftp.postgresql.org/pub/source/v13.4/postgresql-13.4.tar.gz --no-check-certificate
解析:下载完成后,postgresql-13.4.tar.gz包在当前目录;--no-check-certificate,不验证服务端的证书。
3.3安装基础依赖
安装命令:yum install -y readline-devel zlib-devel zlib gcc
解析:安装基础依赖,避免安装PostgreSQL报错。
3.4创建Linux普通用户
(1)创建用户
默认超级用户root不能启动PostgreSQL,创建普通用户postgre。
创建用户命令:useradd postgres
(2)不设置密码使用root用户切换到postgres
登录postgres命令:su postgres
退出postgresml:exit
3.5解压PostgreSQL包
解压命令:tar -xzvf /home/apps/software/postgresql-13.4.tar.gz -C /home/apps/module
解析:把postgresql-13.4.tar.gz解压到指定目录。
3.6规划安装目录
(1)规划安装目录
创建目录:mkdir -p /home/apps/module/postgresql
(2)检查路径
操作目录:cd /home/apps/module/postgresql-13.4
执行命令:./configure --prefix=/home/apps/module/postgresql
解析:./configure是postgresql自带的脚本。
3.7编译PostgreSQL
操作目录:cd /home/apps/module/postgresql-13.4
编译命令:make -C /home/apps/module/postgresql-13.4
解析:-C,编译指定目录下内容。
3.8安装PostgreSQL
操作目录:cd /home/apps/module/postgresql-13.4
安装目的目录:/home/apps/module/postgresql
安装命令:make install PREFIX=/home/apps/module/postgresql
解析:使用PREFIX,把PostgreSQL安装到指定目录。在指定目录下生成:bin、include、lib、share。
3.9创建PostgreSQL的数据目录
创建命令:mkdir -p /home/data/postgresql/data
解析:data目录存放PostgreSQL的数据。
3.10修改数据目录和安装目录的用户所有权
PostgreSQL安装目录和数据目录,所有权修改为postgres用户。
安装目录赋权:chown -R postgres:postgres /home/apps/module/postgresql/
数据目录赋权:chown -R postgres:postgres /home/data/postgresql/data/
3.11设置PostgreSQL环境变量
(1)切换用户和目录
切换到postgres用户下操作。
切换命令:su postgres
切换到目录:cd /home/postgres
查看用户下配置文件清单:ll -a
(2)修改配置
修改配置:vi .bash_profile
修改内容:
PGHOME=/home/apps/module/postgresql
export PGHOME
PGDATA=/home/data/postgresql/data
export PGDATA
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin
解析:PGHOME,安装目录;PGDATA,数据目录。
(3)配置生效
配置生效命令:source ./.bash_profile
(4)确认配置生效
查看版本命令:psql -V
打印信息:psql (PostgreSQL) 13.4
查看命令所在目录:which psql
打印信息:/home/apps/module/postgresql/bin/psql
以上,两条命令均可以验证配置已经生效。
(5)设置开机启动配置生效
默认情况下,重启机器后.bash_profile的环境变量会失效,需手动执行source命令刷新配置。需设置为开机启动,自动刷新生效。
修改指令:vi /etc/profile
增加内容:source /home/postgres/.bash_profile
3.12初始化PostgreSQL数据库
初始化命令:initdb
解析:配置了环境变量,initdb命令在postgres用户任意命令可以使用。
打印成功信息:Success. You can now start the database server using:
pg_ctl -D /home/data/postgresql/data -l logfile start
3.13启动PostgreSQL数据库
(1)启动PostgreSQL
启动命令(指定日志目录):pg_ctl -D /home/data/postgresql/data -l /home/data/postgresql/data/postgres.log start
解析:在执行初始化initdb成功后,会提示登录命令,也就是默认启动命令。
(2)查看PostgreSQL监听端口
命令:netstat -atunlp | grep postgres
解析:postgres的默认端口是5432。
3.14登录PostgreSQL数据库和修改密码
(1)登录PostgreSQL
登录命令:psql
解析:默认登录不需要密码。
(2)修改登录密码
修改命令:\password
口令:hang@123456
解析:需输入两次
(3)退出登录
命令:\q
3.15设置远程可登录
(1)修改远程可登录
修改文件:vi /home/data/postgresql/data/postgresql.conf
修改内容:
listen_addresses = '*'
解析:把#listen_addresses = 'localhost',修改为匹配所有IP地址。
(2)修改登录需要密码
修改文件:vi /home/data/postgresql/data/pg_hba.conf
修改内容:
local all all password
host all all 127.0.0.1/32 password
host all all 192.168.19.1/32 password
host all all ::1/128 password
解析:192.168.19.1/32,部署PostgreSQL主机是192.168.19.166。
3.16重启PostgreSQL数据库
(1)重启数据库
重启动命令:pg_ctl -D /home/data/postgresql/data -l /home/data/postgresql/data/postgres.log restart
(2)登录数据库
命令:psql
解析:提示Password for user postgres:,需要输入登录密码。
3.17创建数据库
(1)创建3个数据库
命令:create database registry;
命令:create database notary_signer;
命令:create database notary_server;
解析:registry、notary_signer、notary_server是harbor需求的3个数据库。
4.安装docker
4.1主机规划
目标:使用1台主机部署docker。
主机app164;IP:192.168.19.166。
4.2下载docker-ce
(1)下载docker-ce
下载:docker-ce-19.03.15和docker-ce-cli-19.03.15
4.3安装docker-ce
(1)安装docker-ce
命令:yum install -y docker-ce-19.03.15 docker-ce-cli-19.03.15
(2)查看docker版本
查看版本:docker --version
4.4启动docker-ce
(1)启动docker-ce
命令:systemctl start docker
(2)关闭docker-ce
命令:systemctl stop docker
(3)查看docker-ce状态
命令:systemctl status docker
5.安装docker-compose
5.1下载docker-compose
(1)下载docker-compose
下载命令:wget https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64
5.2安装docker-compose
docker-compose-linux-x86_64是可执行包,直接使用。
(1)把包移到bin目录
命令:cp /home/apps/software/docker-compose-linux-x86_64 /usr/local/bin/docker-compose
(2)把docker-compose添加为可执行
命令:chmod +x /usr/local/bin/docker-compose
(3)查看docker-compose版本
命令:docker-compose --version
6.安装harbor
6.1主机规划
目标:使用1台主机部署harbor。
主机app166;IP:192.168.19.166。
6.2下载安装包
(1)下载
命令:wget https://github.com/goharbor/harbor/releases/download/v2.3.5/harbor-offline-installer-v2.3.5.tgz
6.3解压安装包
(1)解压到指定目录
命令:tar -xzvf /home/apps/software/harbor-offline-installer-v2.3.5.tgz -C /home/apps/module/
解析:离线安装包,直接解压到指定目录就行。-C,就是指定目录。
6.4修改配置
操作目录:/home/apps/module/harbor
(1)把harbor.yml.tmpl复制一份为harbor.yml
命令:cp harbor.yml.tmpl harbor.yml
(2)修改配置
修改命令:vi /home/apps/module/harbor/harbor.yml
修改内容(本例配置文件内容):
hostname: app166
http:
port: 18021
#external_url: http://192.168.19.58:18121
harbor_admin_password: Harbor12345
data_volume: /harbor_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
external_database:
harbor:
host: 192.168.19.166
port: 5432
db_name: registry
username: postgres
password: hang@123456
ssl_mode: disable
max_idle_conns: 100
max_open_conns: 900
notary_signer:
host: 192.168.19.166
port: 5432
db_name: notary_signer
username: postgres
password: hang@123456
ssl_mode: disable
max_idle_conns: 100
max_open_conns: 900
notary_server:
host: 192.168.19.166
port: 5432
db_name: notary_server
username: postgres
password: hang@123456
ssl_mode: disable
max_idle_conns: 100
max_open_conns: 900
external_redis:
host: 192.168.19.166:27003
password: hang@123456
registry_db_index: 1
jobservice_db_index: 2
chartmuseum_db_index: 3
trivy_db_index: 5
idle_timeout_seconds: 30
proxy:
http_proxy:
https_proxy:
no_proxy:
components:
- core
- jobservice
- trivy
metric:
enabled: false
port: 9090
path: /metrics
6.5加载harbor所需的镜像
操作目录:cd /home/apps/module/harbor
命令:docker load -i harbor.v2.3.5.tar.gz
解析:harbor.v2.3.5.tar.gz这个压缩包里包含harbor所需的组件镜像。docker需启动。
6.6把配置文件注入到harbor
操作目录:cd /home/apps/module/harbor
命令:./prepare
解析:harbor.yml是harbor自带脚本,功能就是把配置文件的内容注入到各组件中。
6.7安装harbor
操作目录:cd /home/apps/module/harbor
命令:./install.sh --with-trivy --with-chartmuseum
解析:./install.sh是harbor自带脚本,功能就是安装harbor的各个组件,安装完成后,默认启动各组件。
6.8查看harbor服务状态
(1)查看服务状态
命令:docker-compose ps
全路径:docker-compose -f /home/apps/module/harbor/docker-compose.yml ps
7.操作harbor
在安装完成后,以后使用harbor的,每个组件启动。
7.1启动redis
操作主机:app166
启动命令:
/home/apps/module/redis-6.2.4/bin/redis-server /home/apps/module/redis-single/node-27003/conf/redis.conf
7.2启动PostgreSQL
操作主机:app166
操作用户:su postgres
启动命令:pg_ctl -D /home/data/postgresql/data -l /home/data/postgresql/data/postgres.log start
重启命令:pg_ctl -D /home/data/postgresql/data -l /home/data/postgresql/data/postgres.log restart
7.3启动docker
(1)启动docker-ce
命令:systemctl start docker
(2)关闭docker-ce
命令:systemctl stop docker
(3)查看docker-ce状态
命令:systemctl status docker
7.4确认docker-compose
可执行文件目录:ll /usr/local/bin/docker-compose
7.5启动harbor
(1)在配置文件目录操作
操作目录:cd /home/apps/module/harbor/
启动命令:docker-compose up
后台启动:docker-compose up -d
停止命令:docker-compose down
解析:在此目录下存放docker-compose的必须配置:docker-compose.yml。
(2)任意目录指定配置文件
命令:docker-compose -f /home/apps/module/harbor/docker-compose.yml up -d
解析:-f /home/apps/module/harbor/docker-compose.yml,指定配置文件;-d,后台进程。
7.6登录harbor
(1)登录信息
地址:http://192.168.19.166:18021
用户名/口令(默认):admin/Harbor12345
(2)harbor首页信息
harbor首页信息。
7.7登录harbor(命令行)
(1)添加私有仓库地址到docker配置
修改命令:vi /etc/docker/daemon.json
修改内容:
{
"insecure-registries":["192.168.19.166:18021"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
(2)重新加载docker配置
重新加载配置:systemctl daemon-reload
重启docker:systemctl restart docker
(3)登录
命令:docker login http://192.168.19.166:18021 -u admin -p Harbor12345
解析:打印日志Login Succeeded,就表示已经登录成功。
7.8推送一个容器镜像到Harbor镜像仓库
(1)查看本地镜像
查看:docker images
查看(指定容器):docker images goharbor/redis-photon
解析:在离线安装harbor时,本地就有harbor的相关镜像,就推送nginx-photon镜像到harbor镜像仓库。
(2)推送到镜像仓库
镜像打标签命令:docker tag goharbor/redis-photon:v2.3.5 192.168.19.166:18021/library/redis-photon:v2.3.5
镜像推送命令:docker push 192.168.19.166:18021/library/redis-photon:v2.3.5
(3)推送到镜像仓库
在harbor UI界面查看。
以上,感谢。
2022年12月9日