云计算之 docker 04 DockerFile 构建私有registry

++++++++++++++++++++
# 9. Docker构建私有registry (默认端口5000)
## 9.1 启动registry
mkdir -p /opt/registry
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/registry:/var/lib/registry registry

-v /opt/registry:/var/lib/registry
## 将镜像数据,持久化到本地目录。
--restart=always  ## 只要docker 服务启动,就启动这个容器。


## 9.2 修改配置文件,让本地的docker 服务,知道有一个镜像服务器192.168.20.211

vim /etc/docker/daemon.json
{
    "registry-mirrors": ["https://n8i4h3lp.mirror.aliyuncs.com"],
    "insecure-registries":["192.168.20.211:5000"]
}

### 说明:"registry-mirrors": ["https://https://n8i4h3lp.mirror.aliyuncs.com"] ##镜像加速器
"registry-mirrors": ["https://uoggbpok.mirror.aliyuncs.com"]
systemctl restart docker

## 9.3 制作本地镜像并push(推)到 192.168.20.211
镜像格式必须要是这样的:192.168.20.211:5000/dfsc/nginx:v1
镜像服务器地址:5000/项目名称/镜像名称:v1
先将本地镜像nginx:latest 重新tag

docker images
docker tag nginx:latest 192.168.20.211:5000/dfsc/nginx:v1

docker push 192.168.20.211:5000/dfsc/nginx:v1



## 9.4 异地进行pull镜像
重新准备一台 server ,安装docker ,在这台server 上 pull 镜像

修改配置文件:
vim /etc/docker/daemon.json

{
"registry-mirrors": ["https://uoggbpok.mirror.aliyuncs.com"],
"insecure-registries":["192.168.20.211:5000"]
}

保存退出,重启docker 。 systemctl restart docker

再进行pull 镜像:
docker pull 192.168.20.211:5000/dfsc/nginx:v1


## 9.5 本地仓库加安全认证 

生成密码:
yum install httpd-tools -y
mkdir /opt/registry-auth/ -p ##生成密钥目录
htpasswd -Bbn dfsc abc.com123 > /opt/registry-auth/htpasswd

## 9.6 重新启动带有秘钥功能的registry容器
docker rm -f `docker ps -qa` ##删除所有容器,重新启一个容器。
docker run -d -p 5000:5000 -v /opt/registry-auth/:/auth/
-v /opt/registry:/var/lib/registry --name register-auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry


## 9.7 push镜像,需要进行login,测试密码验证功能。
docker push 192.168.20.211:5000/dfsc/centos69:v1

 [root@docker ~]# docker login 192.168.20.211:5000
Username: dfsc
Password:


docker push 192.168.20.211:5000/dfsc/centos69:v1


在另一台server 上进行pull 192.168.20.211:5000/dfsc/centos69:v1




## 10. 重启docker服务,容器全部退出的解决办法
vim /etc/docker/daemon.json
在{ } 里面的最后添加:
"live-restore": true  ##当你的docker 服务重启时,容器也自动重启。

## 11. habor实现图形化register
修改hosts文件
vim /etc/hosts


mkdir -p /opt/harbor
1. 安装
第一步: 安装docker和docker-compose
yum install -y docker-compose
第二步: 下载harbor-offline-installer-vxxx.tgz(离线版)
下载:(online 在线版,容量小,安装时候从网络下载,offline是离线版,比较大)

cd /opt
https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-online-installer-v1.8.1.tgz
https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.1.tgz

也可以用IE下载,再上传。
第三步: 上传到/opt,并解压,修改harbor.yml配置文件
tar zxf harbor-online-installer-v1.8.1.tgz

vim /opt/harbor/harbor.yml
 或者改为IP



harbor.yml 说明:

data_volume: /data      #存储harbor数据的位置,安装的时候会自动创建
harbor_admin_password: Harbor12345    #管理员的初始密码,默认用户名/密码为admin/Harbor12345
database:
    password: root123     #用于db_auth的PostgreSQL数据库的root密码
jobservice:
    max_job_workers: 10    #最大同时工作者数
log:
    level: info     #日志等级,debug, info, warning, error, fatal
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor    #存储日志的目录
http:
    port: 80    #http的端口号
https:          #如果启用了公证,则必须设置为https
    port: 443     #https的端口号
    certificate: /your/certificate/path     #SSL证书的路径,仅在协议设置为https时应用
    private_key: /your/private/key/path    #SSL密钥的路径,仅在协议设置为https时应用
第四步: 执行prepare 脚本 (离线版,也可以执行这步。)

cd harbor/
./prepare #这一步,docker 会去网上下载goharbor/prepare 镜像

第五步:运行安装脚本
cd /opt/harbor
./install.sh





默认用户名/密码为admin/Harbor12345






++++++++++++++++++++++++++++++++++++++
2、使用方法
往harbor 推送镜像:
修改daemon.json
vim /etc/docker/daemon.json


修改节点的docker配置文件

{
    "registry-mirrors": ["https://uoggbpok.mirror.aliyuncs.com"],
    "insecure-registries": ["192.168.20.211:5000","192.168.20.211"],
    "live-restore": true
}
systemctl restart docker

重启 docker 服务

3. 在habor中添加项目


往项目里面推送镜像:(帮助)



4. 制作镜像并上传habor
先给镜像打标签:
docker tag centos:6.9 192.168.20.211/dfsc001/centos6.9:v1
登录harbor
docker login 192.168.20.211


push 打标的镜像到harbor
docker push 192.168.20.211/dfsc001/centos6.9:v1





5. 在节点中pull habor中的镜像
docker pull 192.168.20.211/dfsc001/centos6.9:v1

注意: 其他节点要去pull 192.168.20.211 上面的镜像,也需要修改docker 的配置文件 daemon.json
vim /etc/docker/daemon.json

{
    "registry-mirrors": ["https://uoggbpok.mirror.aliyuncs.com"],
    "insecure-registries": ["192.168.20.211:5000","192.168.20.211"],
    "live-restore": true
}
保存,重启docker 服务。