day39(8/29)——harbor私有仓库管理

一、harbor私有仓库管理
是python的包管理工具,和yum对redhat的关系是一样的

yum -y install epel-release
yum  -y install python2-pip
pip install --upgrade pip
pip list  pip 8x
pip install --upgrade pip
pip install --upgrade pip==20.3  -i https://mirrors.aliyun.com/pypi/simple
pip list
pip install docker-compose --ignore-installed requests  -i https://mirrors.aliyun.com/pypi/simple
 
source docker.sh
上传harbor-offline-installer-v2.11.1.tgz包

tar -zxvf harbor-offline-installer-v2.11.1.tgz 
[root@docker-1 ~]# ls
anaconda-ks.cfg  docker.sh  harbor  harbor-offline-installer-v2.11.1.tgz
[root@docker-1 ~]# cd harbor
[root@docker-1 harbor]# ls
common.sh  harbor.v2.11.1.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare

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(查看密码)

vim /etc/docker/daemon.json

{
        "registry-mirrors": [
                "https://do.nark.eu.org",
                "https://dc.j8.work",
                "https://docker.m.daocloud.io",
                "https://dockerproxy.com",
                "https://docker.mirrors.ustc.edu.cn",
                "https://docker.nju.edu.cn"
        ],
 
        "hosts": [
                "tcp://0.0.0.0:2375",
                "unix:///var/run/docker.sock"
        ],
        "insecure-registries":[
                "http://192.168.1.11"
        ]
 
}

vim /usr/lib/systemd/system/docker.service

 13 ExecStart=/usr/bin/dockerd 

systemctl daemon-reload
systemctl start docker

./prepare

      

netstat -lnput|grep 5000

netstat -lnput|grep 80

systemctl stop firewalld

./install.sh

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: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容器编排
cd projectdir

docker-compose start

docker-compose down

docker-compose stop

 1、定义

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

2.compose 是 docker 公司推出的一个工具软件,可以管理多个docker 容器组成的应用

3.需要定义一个 YAML 格式的配置文件 docker-compose.yml,写好多个容器之间的调用关系
4.使用 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-compose 将管理的容器分为三层:工程(project)服务(service)、容器(container)
(1)工程:运行 compose 的目录下所有的文件,包括 docker-compose.yml、extends 文件、环境变量文件等组成一个工程若无特殊指定工程,工程名即为当前目录名。工程的默认配置文件为 docker-compose.yml,可通过环境变量COMPOSE FILE 或 -f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器

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

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

4、YAML文件的格式和语法
    1.YAML 文件格式

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

 key: value

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

name: 'Meng Mr'

age: "34"

如果值包含特殊字符(如冒号或短横线)则应该使用引号将其括起来

description: "This is a YAML file: good for configuationfiles." 

2、YAML注意事项

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

5、Docker-compose安装

6、命令解析

version
指定了Docker compose编排文件的版本
Docker Compose 目前有三个版本,分别为 Version1、Version2和Version3
Version1 是较早的版本,它将来会被弃用。
Vemsion2 是目前的稳定版本,支持更多的指令。

Version3 在功能上与 Version2 类似,但进行了一些改进和扩展,例如增加了对 Docker BuildKit 的支持,可以加速构建过程。

service
指定了在 docker compose 编排中要运行的服务,每个服务都有一个名称,并指定要使用的镜像和容器的配置选项。

     services:
        mysql:#服务名
# 再往下可以对该服务进行定义,比如指定映射端口,指定使用的镜像等,但要注意缩进格式。 

image
指定要使用的 docker 镜像。

services:
    mysql: # 服务名
        build: /docker/mysql
#这里为用户微服务文件夹里面存放的是该服务代码jar包和Dockerfile文件

build
允许在 docker compose 编排中指定 dockerfile 的位置。

services:
    mysql: # 服务名
        build: /docker/mysql
#这里为用户微服务文件夹里面存放的是该服务代码jar包和Dockerfile文件

environment

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

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.mzph.cn/bicheng/53131.shtml

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

相关文章

RFID光触发标签在文件柜管理中的创新应用

在当今信息化时代,文件管理对于企业和机构的重要性不言而喻。传统的文件柜管理方式存在诸多问题,如查找文件困难、管理效率低下、安全性难以保障等。而 RFID 光触发标签技术的出现,为文件柜管理带来了全新的解决方案。 一、传统文件柜管理的…

Spring扩展点系列-@PostConstruct

简介 spring的Bean在创建的时候会进行初始化,而初始化过程会解析出PostConstruct注解的方法,并反射调用该方法。 PostConstruct 的使用和特点 只有一个非静态方法能使用此注解;被注解的方法不得有任何参数;被注解的方法返回值必…

实际开发中git在IDEA中的使用

相信搜索这个的同学代码都已经拉取到本地了,并且已经在idea中打开了。 1.一般我们从远程colone下来的代码默认是在主分支下的,也就是说我们从远程的主分支拉取的代码并且在本地创建了一个主分支。 2.一般主分支是不允许修改的,所以我们可以基…

SpringBoot2:配置绑定与自动配置功能源码解读

一、配置绑定 1、作用说明 我们在开发springboot项目时,会有个配置文件,application.properties文件。 我们知道,像什么访问端口、上传功能的相关配置,都会在这里进行配置。 而这些,都是springboot自带的或者第三方j…

Linux | 匿名管道和命名管道:进程间通信数据流的桥梁

目录 1、进程间通信目的 2、管道——匿名管道和命名管道 匿名管道 匿名管道的示例代码:将数据写入管道、子进程从管道读取数据并将其输出到bash中 父子进程通过匿名管道建立通信 重点:管道的五个特点 命名管道(也称为FIFO)…

每日一题,零基础入门FPGA——工程师在线精讲,直播预告

题目传送门:F学社 zzfpga.com/StudentPlatform/Sheet/QuestionBankhttp://zzfpga.com/StudentPlatform/Sheet/QuestionBank 【第Ⅰ期题目 * 5】 请使用D触发器和必要的逻辑门实现此同步时序电路,用Verilog语言描述。 【第Ⅰ期题目 * 4】 请设计一个0…

观测云核心技术揭秘:基于时间的半结构化数据模型

前言 众所周知,真正意义上的统一监控观测平台本质上是一个超大的数据湖,其存储了大量的来自监控指标,各种各样的日志,各种各样的链路追踪以及包括用户访问行为等海量的可观测性数据。 这些海量数据有什么特点呢? 首先…

【网络安全】逻辑漏洞:绕过应用程序重要功能

未经许可,不得转载。 文章目录 正文漏洞影响正文 目标:xxx.com 一个流行的汽车平台,允许用户为经销商留下评论。该平台有一个功能,用户可以点赞评论,并且它限制每个用户对每个评论只能点赞一次。 然而,我找到了绕过的方法(并不是并发)。 在点击“点赞”按钮时拦截请…

新手指南 | 研发人员奖金激励方案步骤实操

研发团队是一个非常独特的存在。在研发人员的薪酬、激励方案设计上也是很多HR的痛点。 毕竟工作变化大,职责变化快、个体能力差异大、投入了不一定会有产出、多线程并行,贡献难判定、知识密度高,价值难衡量等等... 基于以上难点&#xff0c…

【系统架构设计】嵌入式系统设计(1)

【系统架构设计】嵌入式系统设计(1) 嵌入式系统概论嵌入式系统的组成硬件嵌入式处理器总线存储器I/O 设备与接口 软件 嵌入式开发平台与调试环境交叉平台开发环境交叉编译环境调试 嵌入式系统概论 嵌入性、专用性、计算机系统是嵌入式系统的三个基本的核…

0基础轻松玩转.NET Web API 8.0【CICD】项目实战

1.背景 最近在学习CI/CD,为了加快熟悉CI/CD,我实操了下基于.Net 8.0的CI/CD项目实战。Ci/CD就是自动化作业,实现项目自动编译、发布、执行等,也有用于拉取推送数据的场景。本文主要介绍了在win 11下搭建CI/CD,实现自动…

UEFI——PCD的简单使用

一、PCD的定义及概念 在UEFI固件接口中,PCD(Platform Configuration Database)是一个用于存储和访问平台特定配置信息的机制。PCD允许UEFI驱动程序和应用程序在运行时获取和设置平台相关的参数,而无需硬编码这些值。PCD变量可以被…

加速电商物流效率:推荐几款实用的快递批量查询工具

做电商必不可少的快递批量查询平台分享:固乔快递查询助手使用全攻略 在电商行业日益竞争的今天,高效管理物流信息成为了商家们不可或缺的一环。面对每天成百上千的订单和快递单号,如何快速、准确地查询并跟踪物流状态,成为了电商…

stun和trun

在 WebRTC 中,STUN(Session Traversal Utilities for NAT)和 TURN(Traversal Using Relays around NAT)是用于NAT穿透的两种不同的技术,它们解决的问题不同,因此在某些情况下需要同时使用。 ST…

产品需求过程管理重要性

产品需求过程管理重要性 背景 以下都是真实事项经历回顾,在产品开发过程中,产品经理与研发团队之间的沟通至关重要。然而,沟通不畅或信息缺失常常导致需求无法准确传达,最终影响产品的成功。以下是一些常见的问题: 1.需…

C++基础【字符串】(Ac-Wing)

字符串加空格 #include <iostream> #include <cstring> #include <algorithm>using namespace std;int main() {string s;getline (cin, s);for (int i 0; i < s.size(); i )cout << s[i] << " "; }字符串插入 #include<bits/…

使用HTTP代理注意的点

“在网络世界中&#xff0c;HTTP代理扮演着桥梁的角色&#xff0c;帮助用户匿名访问网站、加速网页加载、绕过地区限制等。然而&#xff0c;不当或不安全地使用HTTP代理也可能带来一系列问题。以下是在使用HTTP代理时需要注意的几个关键点。” 一、选择可靠的代理服务商 首先&…

鹰眼应急实时三维重建装备,高质量交付中!

在《2024年地方应急管理科技信息化任务书》的指导和应急管理万亿国债支撑下&#xff0c;全国各地正积极推进应急管理现代化建设&#xff0c;全力提升“数据汇聚服务能力、监测预警能力、指挥调度能力、支撑保障能力”四项应急管理能力。 制定标准化流程规范&#xff0c;保障交…

[Leetcode 47][Medium]-全排列 II-回溯(全排列问题)

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 原题地址 二、整体思路 和上一道Leetcode46相比&#xff0c;有变化的地方是要排除重复组合的情况。那么在组合问题中去除重复组合的方法是先对数组进行排序,然后在回溯函数中判断当前元素与上一个元素是否相同,若相同…

系统架构师考试学习笔记第三篇——架构设计高级知识(11)软件可靠性基础知识

本章知识点&#xff1a; 第11课时主要学习软件可靠性基本概念、建模、管理、设计、测试和评价等内容。本课时内容侧重于概念知识,根据以往全国计算机技术与软件专业技术资格(水平)考试的出题规律,考查的知识点多来源于教材,扩展内容较少。根据考试大纲,本课时知识点会涉及单项选…