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-compose

chmod a+x /usr/local/bin/docker-compose

测试并查看版本

复制代码
docker-compose version

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

编辑wordpress的compose yaml文件

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

复制代码
services:
   db:                   # 服务1:db
     image: mysql:5.7    # 使用镜像 mysql:5.7版本
     volumes:
       - db_data:/var/lib/mysql   # 数据持久化
     restart: always     # 容器服务宕机后总是重启
     environment:        # 环境配置
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress


   wordpress:          # 服务2:wordpress
     depends_on:       # wordpress服务启动时依赖db服务,所以会自动先启动db服务
       - db
     image: wordpress:latest    # 使用镜像 wordpress:latest最新版
     ports:
       - "8000:80"          #端口映射8000:80
     restart: always
     environment:        # 环境
       WORDPRESS_DB_HOST: db:3306     # wordpress连接db的3306端口
       WORDPRESS_DB_USER: wordpress    # wordpress的数据库用户为wordpress
       WORDPRESS_DB_PASSWORD: wordpress   # wordpress的数据库密码是wordpress
       WORDPRESS_DB_NAME: wordpress    # wordpress的数据库名字是wordpress
volumes:
    db_data: {}

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

启动

复制代码
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证书

证书申请教程

http://t.csdnimg.cn/tfel6

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

安装好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   #配置文件出错这里会安装失败,证书的每个字母都不能出错。

6)服务的停止和启动

cd /opt/harbor

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

镜像推送到私有仓库harbor

首先在harbor中新建一个项目

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是否跟这个链接对应

推送成功

问题: 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

相关推荐
一个天蝎座 白勺 程序猿33 分钟前
KingbaseES数据库归档重做日志文件管理:从配置到运维的实战指南
运维·数据库·oracle·kingbasees·金仓数据库
分布式存储与RustFS4 小时前
镜像仓库的层别堆本地盘:用 RustFS 给 Docker Registry 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
陈希1235 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
@兽血沸腾6 小时前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
闲云自留地11 小时前
K8s 的记忆大脑!ETCD 集群部署、etcdctl 命令与备份恢复全通关
容器·kubernetes·etcd
讯捷蓝达11 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
爱和冰阔落14 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
lisanmengmeng14 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮15 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
上火的金鱼妹15 小时前
k8s生产实际问题排查(网关,数据库读写等)
运维·服务器