Docker:搭建docker私服

官方私服

官网地址

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

Docker:搭建docker私服_第1张图片

配置私服

vi /etc/docker/daemon.json
"insecure-registries":["192.168.198.101:5000"]

# 重启docker服务:
systemctl daemon-reload
systemctl restart docker

新建项目

# 在harbor中新建公共项目:
mycommon

Docker:搭建docker私服_第2张图片

登录私服

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

Docker:搭建docker私服_第3张图片

### 拉取私服nginx镜像
```bash
docker pull harbor.my.com/mycommon/nginx:v1

你可能感兴趣的:(docker,docker,运维,容器,harbor,http和https)