创建docker私有化仓库 (使用 Harbor 搭建)
1、harbor介绍
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
官网地址:https://github.com/goharbor/harbor
环境要求:安装harbor,系统根分区的可用空间需要大于6G,否则安装时会报空间不足。内存2G以上
2、docker-ce的安装
# 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker软件包源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装Docker CE
yum install -y docker-ce
# 启动Docker服务并设置开机启动
systemctl start docker
systemctl enable docker
#镜像加速
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s https://b9sbiwe3.mirror.aliyuncs.com
FQA:
默认配置下,如果在 CentOS 使用 Docker CE 看到下面的这些警告信息:
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
#请添加内核配置参数以启用这些功能。
$ sudo tee -a /etc/sysctl.conf <<-EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
然后重新加载 sysctl.conf 即可
$ sudo sysctl -p
3、安装docker-compose
下载网站docker-compose 版本 :https://github.com/docker/compose/releases/
(提示:Compose v2 架构和安装说明与 v1 不同,请参阅README.md。)这里我使用的是v1最新版本(1.29.2)
#将docker-compose移至/usr/bin/docker-compose目录 mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose #赋予执行权限 chmod +x /usr/local/bin/docker-compose #执行docker-compose测试 docker-compose
4、harbor安装
harbor版本:https://github.com/vmware/harbor/releases 这里我使用的是最新版本
4.1、上传解压离线安装包
并移动到/opt目录,复制一份harbor配置模板文件(harbor.yml.tmpl)命名为harbor.yml
#tar zxvf harbor-offline-installer-v2.3.3.tgz
#mv harbor /opt
# cd /opt/harbor/
# cp harbor.yml.tmpl harbor.yml
4.2、SSL证书生成:
# mkdir -p /data/certs
# cd /data/certs
# openssl req -newkey rsa:4096 -nodes -sha256 -keyout 192.168.3.71.key -x509 -days 365 -out 192.168.3.71.crt
4.3、修改harbor配置脚本
hostname:改成主机ip
http.port:默认将占用80端口。
https:如果要启动https还需要配置ssl证书。默认将占用443端口,如果不启用需要注释
harbor_admin_password:harbor管理员密码。默认管理面板登陆密码为:Harbor12345。
database.password:数据库密码,默认password: root123。
data_volume:数据存放目录,默认目录为/data
修改后效果如下:(添加了一些注释说明)红色标记处为修改的地方
# hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost
hostname = 192.168.3.71
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# https related config(如果不需要https协议请注释https相关内容)
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /data/certs/192.168.3.71.crt
private_key: /data/certs/192.168.3.71.key
# 这里设置的时默认harbor管理员admin账户密码
harbor_admin_password: Harbor
# Harbor DB configuration
database:
# mysql数据库root用户默认密码root123,实际使用时修改下
password: root123
# 空闲连接池中的最大连接数。如果它<=0,则不保留空闲连接。
max_idle_conns: 100
# 打开到数据库的最大连接数。如果它<=0,那么打开连接的数量就没有限制。
# 注意:harbor的postgres默认连接数为1024。
max_open_conns: 900
# 默认数据存放目录
data_volume: /data
4.4、预编译生成harbor的安装脚本
执行命令:./prepare
提示:每次修改完harbor.yml配置文件后都需要运行,生成更新/compose_location/docker-compose.yml编排脚本
预编译完成截图:
4.5、开始安装harbor
执行命令:./install.sh
安装过程详细截图:all-install.png
安装完成截图:
4.6、常用管理命令:
一定要在harbor目录中运行
停止服务: docker-compose stop 开始服务: docker-compose start 重启服务:docker-compose restart 停止服务并删除容器:docker-compose down 启动服务并运行容器:docker-compose up
或者安装成服务(可选项)
vim /usr/lib/systemd/system/harbor.service
设置系统每次启动时调用,内容如下:
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 ExecStart=/usr/bin/docker-compose -f {{ harbor_install_path }}/harbor/docker-compose.yml up ExecStop=/usr/bin/docker-compose -f {{ harbor_install_path }}/harbor/docker-compose.yml down [Install] WantedBy=multi-user.target
4.7、访问Web
浏览器访问网址:https://192.168.3.71/ 默认账号:admin 默认密码:Harbor
(这里harbor配置文件中登录密码我修改为Harbor,如果你没有修改过请与配置文件中harbor_admin_password字段定义的密码为准)
5、远程主机上传拉取镜像
5.1、把证书发给3.72的服务器:
在3.72上创建文件夹:mkdir -p /etc/docker/certs.d/192.168.3.71
# scp /data/certs/192.168.3.71.crt [email protected]:/etc/docker/certs.d/192.168.3.71/
5.2、客户端配置私有镜像地址
修改/etc/docker/daemon.json
vim /etc/docker/daemon.json { "registry-mirrors": ["https://b9sbiwe3.mirror.aliyuncs.com"], "insecure-registries":["http://192.168.3.71"] } 说明:registry-mirrors:镜像地址,insecure-registries:非https访问的仓库地址
5.3、admin登录docker私有仓库
需要先登录才能上传镜像
docker login 192.168.3.71
5.4、给镜像打tag(举了两个实例)
# docker tag nginx:latest 192.168.3.71/library/nginx:latest
# docker tag busybox:latest 192.168.3.71/library/busybox:latest
5.5、push到仓库(举了两个实例)
# docker push 192.168.3.71/library/nginx:latest
# docker push 192.168.3.71/library/busybox:latest
5.6、查看上传结果
回到web界面刷新可以看出已上传上来: