docker-compose;私有镜像仓库harbor搭建;镜像推送到私有仓库harbor

docker-compose;私有镜像仓库harbor搭建;镜像推送到私有仓库harbor

文章目录

  • docker-compose;私有镜像仓库harbor搭建;镜像推送到私有仓库harbor
      • docker-compose
      • 私有镜像仓库harbor搭建
      • 镜像推送到私有仓库harbor

docker-compose

Docker compose可以方便我们快捷高效地管理容器的启动、停止、重启等操作,它类似于linux下的shell脚本,基于yaml语法,在该文件里我们可以描述应用的架构,比如用什么镜像、数据卷、网络模式、监听端口等信息。

我们可以在一个compose文件中定义一个多容器的应用(比如wordpress),然后通过该compose来启动这个应用。

1)安装docker-compose

官方地址 https://github.com/docker/compose/releases

curl -L https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-composechmod a+x /usr/local/bin/docker-compose

测试并查看版本

docker-compose version

2)用docker-compose快速部署应用

编辑wordpress的compose yaml文件

vi docker-compose.yml ##写入如下内容

services:db:                   # 服务1:dbimage: mysql:5.7    # 使用镜像 mysql:5.7版本volumes:- db_data:/var/lib/mysql   # 数据持久化restart: always     # 容器服务宕机后总是重启environment:        # 环境配置MYSQL_ROOT_PASSWORD: somewordpressMYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: wordpresswordpress:          # 服务2:wordpressdepends_on:       # wordpress服务启动时依赖db服务,所以会自动先启动db服务- dbimage: wordpress:latest    # 使用镜像 wordpress:latest最新版ports:- "8000:80"          #端口映射8000:80restart: alwaysenvironment:        # 环境WORDPRESS_DB_HOST: db:3306     # wordpress连接db的3306端口WORDPRESS_DB_USER: wordpress    # wordpress的数据库用户为wordpressWORDPRESS_DB_PASSWORD: wordpress   # wordpress的数据库密码是wordpressWORDPRESS_DB_NAME: wordpress    # wordpress的数据库名字是wordpress
volumes:db_data: {}

这样一个wordpress就安装好了,访问ip:8000就可以进行搭建。

image-20231130113944420

启动

docker-compose up -d

查看

docker-compose ps

还可以停止

docker-compose stop

私有镜像仓库harbor搭建

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是 由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

harbor官方地址: https://goharbor.io

github地址: https://github.com/goharbor/harbor

0)提前准备一个ca证书

如果有自己的域名,可以到https://freessl.cn/ 申请免费的ssl证书

证书申请教程

https://zhuanlan.zhihu.com/p/627559363

https://blog.freessl.cn/acme-quick-start/

申请好后用前两个就可以了

image-20231130125908293

安装好docker-compose

1)下载harbor离线包

https://github.com/goharbor/harbor/releases

我这里下载的是2.6.2

2)将下载的包上传到linux,解压

tar zxf harbor-offline-installer-v2.6.2.tgz -C /opt/

3)准备配置文件

cd /opt/harbo
cp harbor.yml.tmpl harbor.yml ##将模板配置文件拷贝一份为正式的配置文件

4)编辑配置文件

vi harbor.yml
修改 hostname: [reg.mydomain.com](http://reg.mydomain.com/) 为 hostname: [harbor.jiangrou.com](http://harbor.jiangrou.com/)
修改 certificate: /your/certificate/path 和 private_key: /your/private/key/path 为具体的证书地址
修改 harbor_admin_password 为合适的密码

5)安装

sh install.sh   #配置文件出错这里会安装失败,证书的每个字母都不能出错。

image-20231130125117967

6)服务的停止和启动

cd /opt/harbor

docker-compose ps ##查看服务
docker-compose stop  ##关闭
docker-compose up -d ##启动

镜像推送到私有仓库harbor

首先在harbor中新建一个项目

image-20231130131044696

8)拉取公共镜像

docker pull tomcat
docker tag tomcat harbor.jiangrou.top/tang/tomcat:latest   #推送时候会用到,拉取完先打标签

9)把tomcat镜像推送到harbor

# docker login https://harbor.jiangrou.top
输入用户名和密码# docker push harbor.jiangrou.top/tang/tomcat:latest  #推送前要查看打的tag是否跟这个链接对应

推送成功

image-20231130132317296

问题: x509: certificate signed by unknown authority

需要在客户端机器上(也就是你执行docker login的机器上)执行

需要在客户端机器上(也就是你执行docker login的机器上)执行
1) echo -n | openssl s_client -showcerts -connect harbor.jiangrou.top:443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> /etc/ssl/certs/ca-bundle.trust.crt
2)systemctl restart docker

核心知识点/面试考点:
● docker-compse的yaml参数了解;

https://blog.51cto.com/u_13538361/6623629

● 如何配置非安全仓库?为什么要配置非安全?

这个无所谓

● 如何配置镜像仓库的自动清理?都有哪些策略?

https://blog.csdn.net/zhuganlai168/article/details/133737183

扩展知识点:
Docker-compose基础知识梳理 https://www.jianshu.com/p/3ec37fe0e6b2
Harbor配置优化,配置文件深度解析 https://blog.51cto.com/lidabai/5180443

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/234661.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLM 分布式训练框架 | DeepSpeed与Accelerate

🚀 简单记录下根据网上资料(如Reference中所列)所学到的一些知识,这里主要介绍的是deepspeed分布式训练框架相关概念。 😄小日记:今天太舒服了,早上跑了6km,晚上吃了养生菌菇火锅~ …

Ubuntu+Tesla V100环境配置

系统基本信息 nvidia-smi’ nvidia-smi 470.182.03 driver version:470.182.03 cuda version: 11.4 查看系统体系结构 uname -aUTC 2023 x86_64 x86_64 x86_64 GNU/Linux 下载miniconda https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?CM&OA https://mi…

Python入门06布尔值

目录 1 什么是布尔值2 怎么生成布尔值3 在控制程序中使用布尔值4 数据过滤、排序和其他高级操作总结 1 什么是布尔值 首先我们要学习一下布尔值的定义,布尔值是一种数据类型,它只有两个可能的值:True(真)或 False&…

Linux系统部署Tale个人博客并发布到公网访问

文章目录 前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale 前言 今天给大家带来一款基于 Java 语言的轻量级博客开源项目——Tale,Tale…

1000多页!LeetCode刷题手册分享

这本手册确实是一部令人印象深刻的作品。(手册链接在文末!!!) 首先,内容充实是这本手册的一大亮点。它涵盖了广泛的算法和数据结构主题,包括数组、链表、树、图、排序算法、动态规划等等。每个…

CodeTON Round 7 (Div. 1 + Div. 2, Rated, Prizes!)

B. AB Flipping 老规矩,自己要模拟一遍样例,发现样例还不够,就自己构造样例,这样做着做着就会有思路。 分析:假如现在有这样一个字符串 BBBAABABBAAA。会发现前三个和后三个一定是不会被操作的,因为不会满…

Multi-head attention机制

多头:多个相同结构的线性变换层(方阵),要求分别线性变换 B站教学视频参考:https://www.bilibili.com/video/BV1eG4y1N7Jp/?p17&spm_id_frompageDriver&vd_sourcef4c7dcac0ad5ae8189bd414a3b23020d 什么是多头…

C语言从入门到实战——常用字符函数和字符串函数的了解和模拟实现

常用字符函数和字符串函数的了解和模拟实现 前言1. 字符分类函数2. 字符转换函数3. strlen的使用和模拟实现4. strcpy的使用和模拟实现5. strcat的使用和模拟实现6. strcmp的使用和模拟实现7. strncpy函数的使用8. strncat函数的使用9. strncmp函数的使用10. strstr的使用和模拟…

MyBatis的强大特性--动态SQL

目录 前言 if trim where set foreach 前言 动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表…

计算机视觉算法——基于Transformer的目标检测(DN DETR / DINO / Sparser DETR / Lite DETR)

计算机视觉算法——基于Transformer的目标检测(DN DETR / DINO) 计算机视觉算法——基于Transformer的目标检测(DN DETR / DINO)1. DN DETR1.1 Stablize Hungarian Matching1.2 Denoising1.3 Attention Mask 2. DINO2.1 Contrasti…

语音信号处理:librosa

1 librosa介绍 Librosa是一个用于音频和音乐分析的Python库,专为音乐信息检索(Music Information Retrieval,MIR)社区设计。自从2015年首次发布以来,Librosa已成为音频分析和处理领域中最受欢迎的工具之一。它提供了一…

【数据结构】源码角度剖析PriorityQueue

目录 认识 Queue 认识 PriorityQueue PriorityQueue为什么要用二叉堆? PriorityQueue构造方法源码分析 PriorityQueue 的属性 构造方法 JDK1.8传入不可比较的对象 JDK17传入不可比较的对象 传入带有Collection接口的对象 instanceof 关键字 Offer方法分析…