私有云仓库Harbor,docker-compose容器编排

news2024/12/23 19:31:39

一、私有云仓库

1.pip工具

是python的包管理工具,和yum对rehat的关系是一样的

pip install --upgrade pip        升级版本,会报错,需要指定源

pip install --upgrade pip==20.3  -i https://mirrors.aliyun.com/pypi/simple        

pip list        查看版本号

pip                          20.3
pip install docker-compose --ignore-installed requests  -i https://mirrors.aliyun.com/pypi/simple

2.安装docker(脚本安装)

[root@docker ~]# docker --version
Docker version [root@docker ~]# tar -zxvf harbor-offline-installer-v2.11.1.tgz 
6.1.4, build 5650f9b

修改两个配置文件,启动docker

[root@docker harbor]# vim /usr/lib/systemd/system/docker.service 
[root@docker harbor]# vim /etc/docker/daemon.json 
[root@docker harbor]# systemctl  daemon-reload 
[root@docker harbor]# systemctl start docker.service 

3.将harbor传入虚拟机

[root@docker ~]# tar -zxvf harbor-offline-installer-v2.11.1.tgz 
harbor的配置文件是 harbor.yml但是解压后的目录中只有harbor.yml.tmpl,复制他,改名

[root@docker harbor]# cp harbor.yml.tmpl harbor.yml
[root@docker harbor]# ls
common.sh              harbor.yml       install.sh  prepare
harbor.v2.11.1.tar.gz  harbor.yml.tmpl  LICENSE
[root@docker harbor]# vim harbor.yml

[root@docker harbor]# ./prepare         

[root@docker harbor]#./install.sh        #检查

正常之后进行登录,账号admin 密码Harbor12345

​docker pull centos
docker tag centos:latest 192.168.1.51/centos:latest
docker push 192.168.1.51/centos:latest
docker ps --all     #查看状态是否健康
docker-compose start    #启动
docker login http://192.168.1.51
docker tag 192.168.1.51/centos 192.168.1.51/library/centos:v0    #给镜像打标记
docker push 192.168.1.51/library/centos:v0    #推送镜像到达项目
​ 

docker-compose start    #启动

docker login http://192.168.1.51

docker tag 192.168.1.51/centos:latest 192.168.1.51/library/centos:v0    #给镜像打标记
docker push 192.168.1.51/library/centos:v0    #推送镜像到达项目

总结:

1、由于要使用python环境运行docker-compose,所以需要验证python

python --version

2、安装pip(python的包管理工具)【需要使用pip下载安装docker-compose】

yum -y install python2-pip

3、pip版本太低

pip install --upgrade pip==20.3  -i https://mirrors.aliyun.com/pypi/simple

4、下载安装docker-compose

pip install docker-compose --ignore-installed requests  -i https://mirrors.aliyun.com/pypi/simple

5、上传harbor文件,解压

6、配置文件,本来有一个配置harbor.yml.tmpl

cp harbor.yml.tmpl harbor.yml

(修改harbor的配置文件(harbor.yml)但是解压后的目录中只有harbor.yml.tmpl,所以复制他,改名)

vim harbor.yml

  5 hostname: 192.168.1.51(本虚拟机的IP地址)
 
 13 #https:
 14   # https port for harbor, default is 443
 15  # port: 443
 16   # The path of cert and key files for nginx
 17   #certificate: /your/certificate/path
 18   #private_key: /your/private/key/path
 19   # enable strong ssl ciphers (default: false)
 20   # strong_ssl_ciphers: false
 
(注释掉https安全网站的配置)
 
 47 harbor_admin_password: Harbor12345(查看密码)
7、 source docker,配置镜像,启动docker

8、./prepare 检察环境,下载镜像

9、./install.sh

10、docker ps --all

11、在远程主机访问80端口

12、登陆,查看项目

13、上传

(1)登录

docker login http://192.168.1.51
 (2)上传

#打标签
 
docker tag 192.168.1.51/centos:latest 192.168.1.51/library/centos:v0 
 
docker push 192.168.1.51/library/centos:v0

14、查看上传的内容

15、复制链接下载

16、制的下载链接,添加同时共享的镜像在其他docker主机上配置daemon仓库,启动docker,使用复 

二、docker-compose容器编排

1.定义

1.docker compose 是 docker 官方的开源项目,负责实现对docker 容器集群的快速编排(容器,依赖,网络,挂载。)

2.compose 是 docker 公司推出的一个工具软件,可以管理多个docker 容器组成的应用需要定义一个 YAML 格式的配置文件 docker-compose.yml,写

3.好多个容器之间的调用关系
使用 compose 的步骤

1.使用 Dockerfile 定义各个微服务应用并构建出对应的镜像文件Dockerfile 的使用,以便可以在任何地方复制。
2.使用 docker-compose.ym! 义一个完整的业务单元,安排好整体应用中的各个容器服务。
3.最后,执行 docker-compose up 命令来启动并运行整个应用程序,完成一键部署。

2.产生背景

1.使用 Dockertile 定义镜像文件,再于动构建、运行容器等操作,而微服务架构一般包含若干个微服务,且每个微服务一般都会部署多个实例,所以,若每个微服务都需要手动启停,那么维护量会非常庞大,并且工作效率也会很低。
2.而 compose 是用于定义和运行多容器 docker 应用程序的工具。通过 compose,可以使用 YML 文件来配置应用程序需要d的所有服务。
3.仅需使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
4.Compose 可以基于 Compose 文件帮我们快速的部署分布式应用,无需手动一个个创建和运行容器。

5.Compose 文件是一个文本文件,通过指令定义集群中的每个容
器如何运行。

3.核心概念

Docker-composp 将管理的容器分为三层:工程(project)、服务(service)、容器(container)
1.工程:运行 compose 的目录下所有的文件,包括 dockercompose.yml、extends 文件、环境变量文件等组成一个工程若无特殊指定工程,工程名即为当前目录名。工程的默认配置文件为 docker-compose.yml,可通过环境变量。

2.服务:一个工程中包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖等。一个服务中可包括多个容器实例。

3.容器:被 docker-compose 管理或部署的容器集群,调用docker 服务提供的 API来对容器进行管理,只要操作的平台支持 docker API,即可在其上进行 compose 的容器编排。

4.yaml文件的格式和语法

1)、YAML 文件格式
1.yaml 是一种标记语言很直观的数据序列化格式,可读性很高:类似于 xml 描述性语言,语法比xml简单的很多。
2.yaml 数据结构通过缩进进行表示,连续的预目通过减号来表示,键值对用冒号分隔,数组用中括号括起来,hash用花括号括起来。
3.yaml 文件的基本格式由一系列键值对构成。每个键值对都用冒号“: ”分隔

key : vlue

1.在 yaml 中,键和值之间只需要一个空格,这是为了保证 yaml文件的可读性和一致性
2.对于字符串值,可以使用单引号或者双信号将其括起来,这样可以避免出现特殊字符或空格等问题

如果值包含特殊字符(如冒号或短横线)则应该使用引号将其括起来
description: "This is a YAML file: gjood for configuationfiles."

2)、注意事项

1.不支持制表符 tab 键缩进,需要使用空格缩进。
2.通常开头缩进 2个空格。
3.字符后缩进1个空格,如:冒号,逗号,横杠。
4.用 # 表示注释。
5.如果包含特殊字符用单引号引起来。
6.布尔值(true、false、yes、n0、on、off)必须使用“”引号括起来,这样分析器会将它们解释为字符串。

(1)version

指定了Docker compose编排文件的版本
Docker Compose 目前有三个版本,分别为 Version1、Version2和Version3
Version1 是较早的版本,它将来会被弃用。
Vemsion2 是目前的稳定版本,支持更多的指令。Version3 在功能上与 Version2 类似,但进行了一些改进和扩展,例如增加了对 Docker BuildKit 的支持,可以加速构建过程。

(2)service
指定了在 docker compose 编排中要运行的服务,每个服务都有一个名称,并指定要使用的镜像和容器的配置选项。
services:
mysql:#服务名
# 再往下可以对该服务进行定义,比如指定映射端口,指定使用的镜像等,但要注意缩进格式。

(3)image

指定要使用的 docker 镜像。
services:
mysql :# 服务名image:mysql:5.5 #指定mysql镜像,如果主机内不存在该镜像,会从登录的docker镜像仓库内拉取,一般都是从dockerhub上拉取

(4)build
允许在 docker compose 编排中指定 dockerfile 的位置。
services:
mysql :
# 服务名
puild¥ /docker/mysql# 这里为用户微服务文件夹里面存放的是该服务代码jar包和Dockerfile文件

(5)environment

services:
mysql: # 服务名environment:# 下面是MySOL环境变量的例子MYSOL_ROOT_PASSWORD:000000# 设置MySQL的root用户的密码
MYSOL_DATABASE: database据库名称MYSOL_USER: userMySQL用户名MYSOL_PASSWORD:MySQL用户的密码
#指定要创建的数
# 指定要创建的
# 指定要创建的

(6)volumes挂载宿主机路径或命名卷
1.指定路径挂载
services:
¥ 服务名mysql :volumes :
-./mysql/data:/var/lib/mysq #直接指定路径挂载

volumes
挂载宿主机路径或命名卷

(1)指定路径挂载
services: 
mysql: #服务名
    volumes :
        - ./mysql/data:/var/lib/mysq #直接指定路径挂载
(2)⽣成 volume 卷挂载
docker volume create mysql # ⽣成名为mysql的volume卷
 
vim docker-compose.yml
 
services:
 mysql: # 服务名
  volumes:
  - mysql:/var/lib/mysq # 指定volume卷挂载
(3)共享⽬录挂载 
vim docker-compose.yml
 
version: '2' # 使⽤共享⽬录挂载只有‘2’版本⽀持
service:
 mysql: # 服务名
 volumes:
- /var/lib/mysql # 将这个⽬录作为共享⽬录
 nginx:
 volumes:
- /usr/local/nginx/html
 php:
 volumes_from: # 共享⽬录来⾃
 - mysql # 挂载的共享⽬录,挂载后会在容器内⽣成与被挂载的⽬录同名的路径
 - nginx # 共享挂载可以是⼀个列表
port 
指定了要宿主机映射到容器的端⼝,端⼝不能低于 60(宿主机端 ⼝:容器端⼝),如果选择的端⼝号低于 60,可能会与系统保留的 知名端⼝冲突。
services:
 mysql: # 服务名
 ports:
- 3306:3306 # 宿主机端⼝:容器端⼝
expose
⽤于在 docker 容器内部暴露端⼝的选项。
services:
 mysql: # 服务名
 expose:
- 3306
networks
加⼊⽹络,引⽤顶级 networks 条⽬ 

networks: # 与services同级
 dev: # ⾃定义或已存在的⽹络设备名
 driver: bridge # 设备类型:⽹桥
 external: true # 外部存在:是
hostname
设定容器主机名

services:
 mysql: # 服务名
 hostname: mysql
command
指定容器启动时要运⾏的命令,覆盖构建时的默认命令
services:
 mysql: #服务名
 command: --character-set·server=utf8

实操:

[root@docker3 ~]# yum -y install epel-release
[root@docker3 ~]# yum -y install python2-pip

[root@docker3 ~]# pip install --upgrade pip==20.3  -i https://mirrors.aliyun.com/pypi/simple
[root@docker3 ~]#  pip install docker-compose  -i https://mirrors.aliyun.com/pypi/simple

[root@docker3 test]# mkdir html
[root@docker3 test]# echo "山不在高,有仙则灵" > ./html/index.html

[root@docker3 test]# vim docker-compose.yml

version: "3"
services:
  nginx:
    container_name: c1
    image: "nginx:latest"
    ports: 
    - "80:80"
    volumes:
    - /root/test/html/:/usr/share/nginx/html/

[root@docker3 test]# docker up -d

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

本地部署一个WordPress博客结合内网穿透实现异地远程访问本地站点

文章目录 前言1. 安装WordPress2. 创建WordPress数据库3. 安装相对URL插件4. 安装内网穿透发布网站4.1 命令行方式:4.2. 配置wordpress公网地址 5. 配置WordPress固定公网地址 前言 本文主要介绍如何在Linux Ubuntu系统上使用WordPress搭建一个本地网站&#xff0c…

React学习day04-useEffect、自定义Hook函数

11、useEffect(一个React Hook函数) (1)作用:用于在React组件中创建不是由事件引起而是由渲染本身引起的操作,比如发送AJAX请求,更改DOM等(即:视图渲染完后会触发一些事…

网络游戏服务器如何有效防护DDoS与CC攻击

随着网络游戏行业的蓬勃发展,其背后的服务器架构日益复杂,同时也面临着前所未有的网络安全威胁。其中,分布式拒绝服务(DDoS)和CC(Challenge Collapsar)攻击尤为突出,它们通过大量伪造…

90.游戏安全项目-项目搭建与解析

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:易道云信息技术研究院 上一个内容:89.游戏安全项目-htdSdk安装 79.游戏分析工具闪屏问题优化与数据被修改高亮 这里面有注…

权力迷宫:皇权、律法与人性的深度博弈

权力迷宫:皇权、律法与人性的深度博弈 - 孔乙己大叔在人类社会的复杂织锦中,权力与律法的关系往往呈现出一种微妙而深刻的悖论。律法,这一社会秩序的基石,常被视作维护公正、约束行为的利器,然而,在金字塔的…

深度理解指针(5)----指针完结

hello,各位小伙伴们我们现在已经对指针有了深刻的理解,指针来到了收尾环节!让我们来做几题例题来复习之前学习的内容吧! 最近爆火的黑神话悟空不知道小伙伴们体验了没有,小编对八戒还有蜘蛛精的凄惨爱情深深打动特意找…

Springboot使用Mongo数据库实现文件的上传下载预览等服务接口

MongoDB GridFS 简介 MongoDB GridFS是一个用于存储和检索大型文件的规范,它允许在MongoDB数据库中存储超过16MB的文件,如图片、音频、视频等。GridFS通过将文件分割成多个小的chunk(文件片段),每个chunk通常为255KB&…

记URL重定向漏洞骚技巧

0x1 前言 这几天跟着我那几个师傅们在学习URL重定向漏洞,学习了比较多的对于这个漏洞的骚技巧,以及在挖掘edusrc漏洞和企业src相关的URL重定向漏洞时的一些技巧和不错的思路。 最近在跟我那几个师傅们研究学习URL重定向漏洞,然后在一些厂商…

EHS综合管理解决方案落地:管理效率飞升70%!

所有制造企业都面临着一个问题:如何保证EHS制度高质、高效执行?——上海斯歌EHS综合管理解决方案应运而生。 前不久,上海斯歌EHS综合管理解决方案(企业安环综合管理解决方案)在某全球领先的汽配公司成功落地&#xff0…

安灯系统在汽车电子工厂应用案例汇总

在汽车电子工厂中,高效的生产管理和及时的问题解决至关重要。安灯系统作为精益制造执行中的核心工具也是 MES 制造执行系统的重要组成部分,为汽车电子工厂带来了显著的效益。安灯系统是一个面向制造业生产现场,快速联络生产、物料、维修、主管…

VSCode中TypeScript调试配置

一、背景 最近想用TypeScript编译项目,在创建完项目后,我发现VSCode只有在调试TypeScript的单个文件时生效,如果存在引用,再进行断点调试,则调试功能不生效了。 随后,我让Chatgpt 生成一个一套配置&#…

C语言基础(二十五)

栈排序不是最高效的方法,因为栈是一种后进先出(LIFO, Last In First Out)的数据结构,而排序要求根据元素的顺序(如升序或降序)重新排列。但是,可以利用栈的特性,结合其他排序算法的思…

group by 中一定要包含 select 中的 除聚合函数以外 的 所有字段

今天在项目过程中报错: ### SQL: SELECT UNIT_NAME,dc.CAPTION as area,ifnull(a.bgSum,0) AS bgSum,ifnull(concat(FORMAT(a.bgSum/k.m*100,1),%),0.0%) as bgRatio FROM inspection_station_info isi left join dic_content dc on dc.CODE_VALUE…

K 线图快速绘制教程:使用 KLineChart 展示 DolphinDB K 线

KLineChart 是一款开源、简单易用、适用场景丰富的 Web 前端金融图表,基于 html5 canvas 构建,零依赖压缩包仅 40K,非常轻量。它可以用于渲染金融 K 线图,同时支持多种数据源,提供了丰富的交互功能以及指标计算接口。由…

动物消消乐:Scratch消除类游戏作品

小虎鲸Scratch资源站-免费Scratch作品源码,素材,教程分享平台! 体验《动物消消乐》,开启欢乐消除之旅! 在这个快节奏的时代,放松心情、享受乐趣显得尤为重要。小虎鲸Scratch资源站为您带来了全新的游戏体验——《动物消消乐》。这款游戏不仅…

【CTF Web】BUUCTF Upload-Labs-Linux Pass-01 Writeup(JS分析+代码审计+文件上传)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的…

上班摸鱼的人怎么治理?只要5个步骤让员工服服帖帖,打造干净职场

在职场中,我们时常会遇到一些同事在上班时间“摸鱼”,比如浏览与工作无关的网站、玩游戏、聊天等。这些行为不仅影响了工作效率,还可能损害团队的整体氛围和企业的利益。那么,如何有效地治理这种“摸鱼”现象呢?今天&a…

鸿蒙ArkTS小案例-购物车

最近用鸿蒙的ArkTS做了一个购物车的小案例,在这里分享一下,该购物车已实现如下功能: 1. 购物车商品数量支持1个或者多个 2. 勾选1个或者多个商品后,底部可以动态计算出购买总数量和总价格 3. 同时,可以对购买商品的…

SpringBoot对接Midjourney Api

提示&#xff1a;SpringBoot对接Midjourney Api 文章目录 目录 文章目录 后端代码 导包 controller层 工具类层 前端代码 申请API 测试结果 后端代码 导包 <!--添加hutool的依赖--><dependency><groupId>cn.hutool</groupId><artifactId&g…

IoT客户端+联邦学习微调大模型

大型模型的训练涉及到微调&#xff0c;微调则面临着高质量数据的稀缺性。与基于集中式数据中心的解决方案相比&#xff0c;物联网-IoT中大型模型的更新面临着分布式客户端私有且异构数据的协调挑战。为了解决这一挑战&#xff0c;作者提出了KOALA来推动物联网中大模型的训练。由…