官方私服
官网地址
https://hub.docker.com/_/registry
基础镜像
拉取镜像
docker pull registry:2.7.1
备份镜像
docker save registry:2.7.1 -o registry.2.7.1.tar
导入镜像
docker load -i registry.2.7.1.tar
浏览器测试
http://192.168.198.101:5000/v2/_catalog
上传镜像
docker tag nginx:1.19.3-alpine 192.168.198.101:5000/nginx:v1
docker push 192.168.198.101:5000/nginx:v1
发现上传失败,原因docker只支持https
解决
添加私服仓库地址
# 编辑配置文件
vi /etc/docker/daemon.json
# 增加仓库配置信息
{ "insecure-registries":["192.168.198.101:5000"] }
# 重启docker
systemctl daemon-reload
systemctl restart docker
# 查看docker信息确认仓库是否添加
docker info
docker push 192.168.198.101:5000/nginx:v1
浏览器查看
http://192.168.198.101:5000/v2/_catalog
# 查看nginx详细信息
# http://ip:port/v2/镜像名称/tags/list
http://192.168.198.101:5000/v2/nginx/tags/list
拉取docker私服镜像
docker pull 192.168.198.101:5000/nginx:v1
企业私服
harbor官网地址
# harbor官网地址:
https://goharbor.io/
# github官网地址:
https://github.com/goharbor/harbor
# 官方帮助文档:
# 安装时查询官方文档版本来安装
https://github.com/goharbor/harbor/blob/v1.9.4/docs/installation_guide.md
docker-compose
# 验证docker-compose
docker-compose -v
硬件要求
硬件资源 | 最小配置 | 推荐配置 |
---|---|---|
CPU | 2 CPU | 4 CPU |
内存 | 4 GB | 8 GB |
硬盘 | 40 GB | 160 GB |
安装harbor
http安装
开发环境大部分采用http方式进行安装;生产环境必须采用https方式安装。
按照开发环境安装
# 1.解压软件
cd /data
tar zxf harbor-offline-installer-v1.9.4.tgz
# 2.进入安装目录
cd harbor
# 3.修改配置文件
vi harbor.yml
3.1修改私服镜像地址
hostname: 192.168.198.101
3.2修改镜像地址访问端口号
port: 5000
3.3harbor管理员登录系统密码
harbor_admin_password: Harbor12345
3.4修改harbor映射卷目录
data_volume: /data/harborvolume
# 4.安装harbor
# 4.1执行启动脚本,经过下述3个步骤后,成功安装harbor私服
./install.sh
# 4.2准备安装环境:检查docker版本和docker-compose版本
# 4.3加载harbor需要的镜像
4.4准备编译环境
# 4.5启动harbor。通过docker-compose方式启动服务
# 4.6google浏览器访问harbor私服
http://192.168.198.101:5000
username: admin
password: Harbor12345
配置私服
vi /etc/docker/daemon.json
"insecure-registries":["192.168.198.101:5000"]
# 重启docker服务:
systemctl daemon-reload
systemctl restart docker
新建项目
# 在harbor中新建公共项目:
mycommon
登录私服
docker login -u admin -p Harbor12345 192.168.198.101:5000
# 退出私服
docker logout 192.168.198.101:5000
上传nginx镜像
# docker tag 镜像名称:版本(docker images中) ip:port/项目名称/镜像名称:版本(自定义)
docker tag nginx:1.19.3-alpine 192.168.198.101:5000/mycommon/nginx:v1
docker push 192.168.198.101:5000/mycommon/nginx:v1
拉取私服nginx镜像
docker pull 192.168.198.101:5000/mycommon/mariadb:10.5.2
https安装
解压harbor
在harbor中创建一个目录,用于存放证书
echo "192.168.198.101 harbor.my.com" >> /etc/hosts
cat /etc/hosts
cd /data
tar zxf harbor-offline-installer-v1.9.4.tgz
cd harbor/
mkdir -p ssl
cd ssl
获得证书颁发机构
在生产环境中,应该从CA官方获取证书。在测试或开发环境中,可以生成自己的CA。若要生成CA证书,请运行以下命令。
cd /data/harbor/ssl
创建CA根证书
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 -subj
"/C=TW/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.my.com" -key ca.key -out ca.crt
获取服务器证书
证书通常包含.crt文件和.key文件,例如harbor.my.com.crt和harbor.my.com.key。
创建自己的私钥
openssl genrsa -out harbor.my.com.key 4096
生成证书签名请求
调整-subj选项中的值以反映您的组织。如果使用域名方式连接harbor主机,则必须将其指定为common name(CN)属性,并在key和CSR文件名中使用它。
openssl req -sha512 -new -subj "/C=TW/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.my.com" -key harbor.my.com.key -out harbor.my.com.csr
生成注册表主机的证书
无论是使用域名还是使用IP地址连接到您的Harbor主机,都必须创建此文件,以便您可以为harbor主机生成符合使用者替代名称(SAN)和x509 v3扩展要求的证书。替换DNS条目以反映harbor的域。
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=harbor.my.com
EOF
使用v3.ext文件为harbor主机生成证书。
openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in harbor.my.com.csr -out harbor.my.com.crt
为docker配置服务器证书,密钥和CA
生成ca.crt、harbor.my.com.crt和harbor.my.com.key文件后,必须将它们提供给Harbor和Docker,并重新配置Harbor以使用它们。
将yourdomain.com.crt转换为yourdomain.com.cert,供Docker使用。
Docker守护进程将.crt文件解释为CA证书,.cert文件解释为客户端证书。
openssl x509 -inform PEM -in harbor.my.com.crt -out harbor.my.com.cert
mkdir -p /etc/docker/certs.d/harbor.my.com/
cp harbor.my.com.cert /etc/docker/certs.d/harbor.my.com/
cp harbor.my.com.key /etc/docker/certs.d/harbor.my.com/
cp ca.crt /etc/docker/certs.d/harbor.my.com/
# 重启docker服务:
systemctl daemon-reload
systemctl restart docker
修改harbor.yml文件
注释掉http的配置信息
hostname: harbor.lagouedu.com
https:
port: 443
certificate: /data/harbor/ssl/harbor.my.com.crt
private_key: /data/harbor/ssl/harbor.my.com.key
安装harbor
docker pull goharbor/prepare:v1.9.4
cd /data/harbor
./prepared
./install.sh
访问UI
C:\Windows\System32\drivers\etc
# hosts加入下面内容
192.168.198.101 harbor.my.com
https://harbor.my.com/
上传镜像
docker-100服务器:
将harbor服务器端生成的ca.crt文件复制到/etc/pki/ca-trust/source/anchors/中。此路径为centos操作系统,其他操作系统自行查阅
执行命令更新ca证书授权:update-ca-trust
重启docker服务:
systemctl restart docker
echo "192.168.198.101 harbor.lagouedu.com" >> /etc/hosts
docker login harbor.my.com
admin
Harbor12345
docker load -i nginx.1.19.3.alpine.tar
docker tag nginx:1.19.3-alpine harbor.my.com/mycommon/nginx:v1
docker push harbor.my.com/mycommon/nginx:v1
新建项目
# 在harbor中新建公共项目:
mycommon
### 拉取私服nginx镜像
```bash
docker pull harbor.my.com/mycommon/nginx:v1