39次8.29(了解docker-compose,docker-compose编排容器,配置harbor服务)

news2024/9/28 8:22:06

1.使用使用docker-compose编排容器

1.YAML ⽂件的格式和语法

1)YAML ⽂件格式

yaml 是⼀种标记语⾔很直观的数据序列化格式,可读性很⾼。 类似于 xml 描述性语⾔,语法⽐xml简单的很多。

yaml 数据结构通过缩进进⾏表示,连续的项⽬通过减号来表示,键值对⽤冒号分隔,数组⽤中括号括起来,hash⽤花括号括起来。

yaml ⽂件的基本格式由⼀系列键值对构成。每个键值对都⽤冒号“: ”分隔

 key: value

在 yaml 中,键和值之间只需要⼀个空格,这是为了保证 yaml ⽂件的可读性和⼀致性

对于字符串值,可以使⽤单引号或者双引号将其括起来,这样可以避免出现特殊字符或空格等问题

 name: 'Meng Mr' 
 age: "34"

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

 description: "This is a YAML file: good for configuation files."

2)YAML 注意事项

不⽀持制表符 tab 键缩进,需要使⽤空格缩进。

通常开头缩进 2 个空格。

字符后缩进 1 个空格,如:冒号,逗号,横杠。

⽤ # 表示注释。

如果包含特殊字符⽤单引号引起来。

布尔值(true、false、yes、no、on、off)必须使⽤“”引号括起来,这样分析器会将它们解释为字符串。

3)列表和数组在yaml中,可以使⽤“-”符号表示⼀个列表和数组

 fruits:    # fruits是⼀个键,它对应⼀个列表,包含三个元素:apple、banana、orange
​
apple   # fruits为⼀个⼤项,下⾯的⼩项只需要缩进⼏个空格,与其他项⽬对⻬即可
​
banana
​
orange

4)嵌套数据结构yaml⽀持嵌套数据结构,可以⽤缩进来表示不同层级之间的关系, 可使⽤ # 号表示注释信息。

person:   
  name: 'Meng Mr'   # 两个空格,name和age是person的⼀级⼦节点
  age: "34"
  address:          # address是person的⼆级⼦节点
    street: '123 Main St'   # address节点包含了street、city、state和zip四个⼀级⼦节点
    city: 'Anytown'
    state: 'CA'
    zip: '12345'

5)Docker-compose 安装使用pip工具-------安装docker-compose

pip是python的包管理工具,和yum是redhat的关系是一样的

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

 [root@docker1 ~]# python --version
 Python 2.7.5
​
#安装pip,python的包管理工具(需要使用pip下载安装docker-compose)
[root@docker1 ~]# yum -y install python2-pip
​
#查看所有已经安装过的python第三方库,发现pip版本太低
[root@docker1 ~]# pip list
pip (8.1.2)
​
#升级pip版本
[root@docker1 ~]# pip install --upgrade pip

安装失败

[root@docker1 ~]# pip install --upgrade pip==20.3 -i https://mirrors.aliyun.com/pypi/simple
Successfully installed pip-20.3
[root@docker1 ~]# pip list
pip                          20.3
​
#使用pip安装docker-compose
​
[root@docker1 ~]# pip install docker-compose --ignore-installed requests -i https://mirrors.aliyun.com/pypi/simple
[root@docker1 ~]# pip list
docker-compose      1.26.2

配置docker

[root@docker1 ~]# sh docker.sh 
[root@docker1 ~]# docker --version
Docker version 26.1.4, build 5650f9b

6)docker-compose 命令解析

1、⽂件内常⽤指令字段

(1)version

指定了Docker compose编排⽂件的版本 Docker Compose ⽬前有三个版本,分别为 Version1、 Version2和Version3。

Version1 是较早的版本,它将来会被弃⽤。

Version2 是⽬前的稳定版本,⽀持更多的指令。

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

version:'3'

(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: # 服务名
build: /docker/mysql # 这⾥为⽤户微服务⽂件夹,⾥⾯存放的是该服务代码jar包和Dockerfile⽂件

(5)environment指定了要设置的环境变量。

 services:
  mysql: # 服务名
    environment: # 下⾯是MySQL环境变量的例⼦
    MYSQL_ROOT_PASSWORD:   000000 # 设置MySQL的root⽤户的密码
    MYSQL_DATABASE: database # 指定要创建的数据库名称
    MYSQL_USER: user # 指定要创建的MySQL⽤户名
    MYSQL_PASSWORD: 123 # 指定要创建的MySQL⽤户的密码

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

1、指定路径挂载

services:
  mysql: # 服务名
    volumes:
     - ./mysql/data:/var/lib/mysq # 直接指定路径挂载

2、⽣成 volume 卷挂载

 [root@doc ~]# docker volume create mysql # ⽣成名为mysql的volume卷
 [root@doc ~]# vim docker-compose.yml
 services:
  mysql: # 服务名
    volumes:
     - mysql:/var/lib/mysq # 指定volume卷挂载

3、共享⽬录挂载

 [root@doc ~]# vim docker-compose.yml
 version: '2' # 使⽤共享⽬录挂载只有‘2’版本⽀持
 service:
  mysql: # 服务名
    volumes:
     - /var/lib/mysql # 将这个⽬录作为共享⽬录
  nginx:
    volumes:
     - /usr/local/nginx/html
  php:
    volumes_from: # 共享⽬录来⾃
    - mysql # 挂载的共享⽬录,挂载后会在容器内⽣成与被挂载的⽬录同名的路径
    - nginx # 共享挂载可以是⼀个列表

(7)port

指定了要宿主机映射到容器的端⼝,端⼝不能低于 60(宿主机端 ⼝:容器端⼝),如果选择的端⼝号低于 60,可能会与系统保留的知名端⼝冲突。

 services:
  mysql: # 服务名
    ports:
     - 3306:3306 # 宿主机端⼝:容器端⼝

(8)expose⽤于在 docker 容器内部暴露端⼝的选项。

 services:
  mysql: # 服务名
    expose:
     - 3306

(9)networks加⼊⽹络,引⽤顶级 networks 条⽬.

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

(10)hostname设定容器主机名

 services:
  mysql: # 服务名
    hostname: mysql

(11)command指定容器启动时要运⾏的命令,覆盖构建时的默认命令

services:
  mysql: #服务名
    command: --character-set·server=utf8
2、docker compose 命令选项

(1)build:重新构建服务(2) ps:列出容器(3) up:启动所有docker-compose服务(4) up -d:启动所有docker-compose服务启动并后台运⾏(5) exec:进⼊容器实例内部(6)scale:指定⼀个服务器启动数量(7)top:显示容器进程(8)logs:查看容器输出⽇志(9)down:停⽌并删除容器、⽹络、卷、镜像(10)stop:停⽌服务(11) start:启动服务(12) restart:重启服务(13)config:检查配置(14)config -q:检查配置,有问题才有输出(15) --version:查看版本

3.docker-compose 实例
# 准备docker环境
 [root@docker03 ~]#  vim /etc/docker/daemon.json
         "insecure-registries" : [
                 "http://10.0.0.52"
         ],
 [root@docker03 test]# vim /usr/lib/systemd/system/docker.service 
 ExecStart=/usr/bin/dockerd
 [root@docker03 test]# systemctl daemon-reload
 [root@docker03 test]# systemctl start docker
 [root@docker03 ~]# mkdir test
 [root@docker03 ~]# cd test
 # 创建docker-compose实例
 [root@docker03 test]# mkdir html
 [root@docker03 test]# echo "我是被编排的nginx" > ./html/index.html
 [root@docker03 test]# ls
 docker-compose.yml  html
 [root@docker03 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/ #挂载
 # 启动compose集群
 # 要在 docker-compose.yml ⽂件所在的⽬录下才能通过 docker compose 命令启动容器。
 [root@docker03 test]# docker compose up -d   # 启动⼯程后会根据指定的容器名称,⽣成对应的容器
 WARN[0000] /root/test/docker-compose.yml: `version` is obsolete 
 [+] Running 8/8
  ✔ nginx Pulled                                                                               30.4s 
    ✔ e4fff0779e6d Pull complete                                                                9.5s 
    ✔ 2a0cb278fd9f Pull complete                                                               19.8s 
    ✔ 7045d6c32ae2 Pull complete                                                               19.8s 
    ✔ 03de31afb035 Pull complete                                                               19.8s 
    ✔ 0f17be8dcff2 Pull complete                                                               19.9s 
    ✔ 14b7e5e8f394 Pull complete                                                               19.9s 
    ✔ 23fa5a7b99a6 Pull complete                                                               19.9s 
 [+] Running 2/2
  ✔ Network test_default  Created                                                               0.3s 
  ✔ Container c1          Started                                                               0.8s
 # 访问测试
 [root@docker03 test]# docker images
 REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
 nginx        latest    5ef79149e0ec   2 weeks ago   188MB
 [root@docker03 test]# docker ps
 CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS                               NAMES
 46d8b91c4a5e   nginx:latest   "/docker-entrypoint.…"   6 minutes ago   Up 6 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   c1
 [root@docker03 test]# curl 10.0.0.52
 我是被编排的nginx
 # 浏览器访问

2.habor配置

Harbor 是一个用于存储和管理 Docker 镜像等容器镜像的企业级 Registry 服务器 。

1、上传harbor文件,解压
[root@docker ~]# yum -y install python2-pip
[root@docker ~]# pip list
pip (8.1.2)
​
[root@docker ~]# pip install --upgrade pip==20.3  -i https://mirrors.aliyun.com/pypi/simple
[root@docker ~]# pip list
docker-compose                     1.26.2
​
[root@docker01 ~]# tar -zxvf harbor-offline-installer-v2.11.1.tgz 
[root@docker01 ~]# cd harbor
[root@docker01 harbor]# ls
common.sh  harbor.v2.11.1.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare
2、修改配置文件
[root@docker01 harbor]# cp harbor.yml.tmpl harbor.[root@docker01 harbor]# vim harbor.yml
hostname: 192.168.1.55   #第5行
#https下都注释
#https:
  # https port for harbor, default is 443
#  port: 443
  # The path of cert and key files for nginx
 # certificate: /your/certificate/path
 # private_key: /your/private/key/path
  # enable strong ssl ciphers (default: false)
  # strong_ssl_ciphers: false
3、部署容器环境
# 修改daemon.json文件
 [root@docker1 harbor]# 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"
         ],
         "host" : [
                 "tcp://0.0.0.0:2375",
                 "unix:///var/run/docker.sock"
         ],
         "insecure-registries" : [
         # 本机ip地址(仓库),使用80端口
                 "http://10.0.0.51"
         ],
         "bip" : "172.20.13.1/24",
         "mtu" : 1472
 }
 # 开启容器
 [root@docker1 harbor]# systemctl start docker
 # 修改docker文件
 [root@docker1 harbor]# vim /usr/lib/systemd/system/docker.service 
 ExecStart=/usr/bin/dockerd
 # 重新加载daemon文件
 [root@docker1 harbor]# systemctl daemon-reload
 # 重启docker
 [root@docker1 harbor]# systemctl restart docker
​
4、使用自带脚本检查并初始化配置harbor
 # 检查环境是否合适
 [root@docker1 harbor]# ./prepare
 prepare base dir is set to /root/harbor
 Unable to find image 'goharbor/prepare:v2.11.1' locally
 Successfully called func: create_root_cert
 # 查看端口是否被占用并关闭防火墙
 [root@docker1 harbor]# netstat -lntup | grep 5000
 [root@docker1 harbor]# netstat -lntup | grep 80
 [root@docker1 harbor]# systemctl stop firewalld
 # 开始初始化配置harbor环境
 [root@docker1 harbor]# ./install.sh 
5、查看容器运行情况
 # 查看被创建的容器,都是正在开启的状态,等一会让他全部开启
 [root@docker1 harbor]# docker ps -a
6、测试

到浏览器中访问本机ip地址

输入(用户名:admin 密码:Harbor12345)

7、推送镜像到harbor的私有仓库中
[root@docker01 harbor]# docker  login http://192.168.1.55
Username: admin
Password: Harbor12345
​
[root@docker01 harbor]# docker tag centos:latest 192.168.1.55/centos:latest  #为镜像打标签
​
​
[root@docker01 harbor]# docker push 192.168.1.55/library/yjjcentos:v0   #将本地镜像推送到私有库中
8、harbor配置中使用到的docker-compose命令
[root@docker1 ~]# ls
 anaconda-ks.cfg  docker.sh  harbor  harbor-offline-installer-v2.11.1.tgz  v
 [root@docker1 ~]# cd harbor
 [root@docker1 harbor]# ls
 common     docker-compose.yml     harbor.yml       install.sh  prepare
 common.sh  harbor.v2.11.1.tar.gz  harbor.yml.tmpl  LICENSE
 # 一次性关闭所有容器
 [root@docker1 harbor]# docker-compose stop
 # 开启所有容器
 [root@docker1 harbor]# docker-compose start
 # 删掉所有容器
 [root@docker1 harbor]# docker-compose down
 # 重新检查环境
 [root@docker1 harbor]# ./prepare
 # 重新初始化
 [root@docker1 harbor]# ./install.sh
​
9、拉取harbor的私有仓库中的镜像

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

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

相关文章

AI绘画与《黑神话:悟空》的碰撞,擦出不一样的火花!

在当今数字时代,利用人工智能技术创造艺术作品已成为一种引人注目的趋势。 特别是在社交媒体平台上,如小红书,通过展示AI绘画作品可以吸引大量关注,增加曝光率,并且为自己带来潜在的商业机会。 如果你是《黑神话&…

sql-labs31-35关通关攻略

第三十一关 一.判断闭合 1“” 二.查询数据库 http://127.0.0.1/Less-31/?id-1%22)%20union%20select%201,2,database()--http://127.0.0.1/Less-31/?id-1%22)%20union%20select%201,2,database()-- 三.查表 http://127.0.0.1/Less-31/?id-1%22)%20union%20select%201,…

java实现ocr功能(Tesseract OCR)

1、pom文件中引入依赖 <dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>4.5.4</version> </dependency> 2、下载语言库文件&#xff08;不要放到resources下&#xff0c;可…

Python TensorFlow 实战指南

引言 TensorFlow 是一个功能强大的开源库&#xff0c;被广泛应用于数值计算和机器学习任务。本指南旨在帮助读者理解如何使用 Python 和 TensorFlow 构建机器学习模型。我们将从基础开始&#xff0c;逐步深入到更复杂的主题。 第一部分&#xff1a;入门 第1章&#xff1a;T…

基于vue框架的仓库物流信息管理系统设计和实现0a6d7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;供应商,商品分类,商品信息,商品入库,车辆信息,订单出库,订单发货,订单抵达,用户 开题报告内容 基于Vue框架的仓库物流信息管理系统设计和实现 开题报告 一、研究背景与意义 随着全球电子商务的蓬勃发展和物流行业的迅速崛起&#xff…

电子设备网络新航向:SEO携手新媒体,打造强势品牌曝光

电子设备企业怎么有效地进行网络推广&#xff0c;把业务越做越好呢&#xff1f;根据湖南竑图网络13年从事互联网优化经验来看&#xff0c;可以给大家分享几点&#xff0c;希望对各位企业老板和高管有一定作用&#xff01; 一、关键词优化。搜索关键词依旧是传统企业获取精准流量…

Three.js Cesium.js 案例聚集地

对于大多数的开发者来言&#xff0c;看了很多文档可能遇见不到什么有用的&#xff0c;就算有用从文档上看&#xff0c;把代码复制到自己的本地大多数也是不能用的&#xff0c;非常浪费时间和学习成本&#xff0c; 尤其是three.js &#xff0c; cesium.js 这种难度较高&#xff…

kubesphere-devops环境-修改maven源到阿里云

文章目录 前言一、maven配置文件在kubesphere中的位置二、修改configmap&#xff0c;增加阿里源信息总结 前言 使用kubesphere搭建了devops环境&#xff0c;但是在构建maven的时候&#xff0c;发现使用的是官方的镜像&#xff0c;修改为阿里云的mirrors 一、maven配置文件在ku…

用Django框架+爬虫技术实现自动获取可画(Canva)团队会员资格的方法

可画(canva)是一个非常流行的在线平面设计平台,因为它无需专业训练和技能就可以利用其丰富的资源设计出美观、酷炫的作品,这些作品可以是视频、广告、演示文稿、网站页面、社交媒体界面、商业标识等等,因而它受到了极其广泛的设计专业和非专业人群的喜爱。在可画平台上,不…

PHP房产管理多终端系统灵活应对各种管理需求系统小程序源码

房产管理多终端系统&#xff0c;灵活应对万变管理需求&#x1f3e0;&#x1f4bc; &#x1f308; 开篇&#xff1a;房产管理的挑战与机遇 在房产行业日益繁荣的今天&#xff0c;管理需求也变得复杂多样。&#x1f914; 无论是大型房企还是小型中介&#xff0c;都面临着房源信息…

前端Vue使用AES的GCM模式加密

文章目录 前端加密测试Java加解密代码 写了个新的前端项目&#xff0c;公司要求&#xff0c;账号密码这些必须是加密传输的&#xff1b;后端使用了GCM模式加密&#xff0c;前端是复制的一个以前项目的代码&#xff0c;原来是有写加密的&#xff0c;使用的是CryptoJS组件CTR模式…

学生用的蓝牙耳机推荐有哪些?四款TOP榜单高人气机型分享

作为一个蓝牙耳机的重度使用党&#xff0c;耳机已经成为了学生们不可或缺的学习伴侣&#xff0c;声音对于我们学生党来说&#xff0c;选择一款性价比高、舒适度好且续航能力强的蓝牙耳机尤为重要&#xff0c;那么学生用的蓝牙耳机推荐有哪些&#xff1f;今天我就为大家推荐四款…

【机器学习】决策树------迅速了解其基本思想,Sklearn的决策树API及构建决策树的步骤!!!

目录 &#x1f354; 案例剖析 &#x1f354; 通过sklearn实现决策树分类并进一步认识决策树 &#x1f354; 基于规则构建决策树 &#x1f354; 构建决策树的三个步骤 &#x1f354; 小结 学习目标 &#x1f340; 了解决策树算法的基本思想 &#x1f340; 了解Sklearn的决策…

经纬恒润INTEWORK-TPA 新版本正式发布

在汽车电子研发领域&#xff0c;随着产品复杂度日益提升&#xff0c;测试工作的重要性愈发凸显。然而&#xff0c;测试用例撰写的繁琐、测试数据统计的困难以及报告管理的无序&#xff0c;常常让测试工程师们倍感压力。为了解决测试管理的难题&#xff0c;经纬恒润正式推出INTE…

拿到一个新项目,如何开展测试?

很多人拿到一个项目就开始用自己的理解进行测试&#xff0c;这样的话可能会造成因为自己对需求理解的偏差&#xff0c;导致在测试过程中会发现自己理解的需求跟开发实际做出来的功能不一致。其实&#xff0c;拿到一个新项目后&#xff0c;开展测试工作是一个系统而有序的过程。…

Python爬虫(一文通)

Python爬虫&#xff08;基本篇&#xff09; 一&#xff1a;静态页面爬取 Requests库的使用 1&#xff09;基本概念安装基本代码格式 应用领域&#xff1a;适合处理**静态页面数据和简单的 HTTP 请求响应**。 Requests库的讲解 含义&#xff1a;requests 库是 Python 中一个…

北京青蓝智慧科技: 我国网民规模近11亿人 互联网普及率达78%

中国互联网络信息中心&#xff08;CNNIC&#xff09;近日发布了最新一期《中国互联网络发展状况统计报告》。 根据报告&#xff0c;截至2024年6月&#xff0c;中国的网民数量接近11亿&#xff0c;具体数字为10.9967亿人&#xff0c;较2023年12月增加了742万&#xff0c;互联网…

【pyhton】python如何实现将word等文档中的文字转换成语音

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

空间计量 | 空间误差模型SEM

在空间OLS回归分析中如果得到LM检验并且判断得到应该使用空间误差SEM模型时&#xff0c;接着本文档介绍空间误差SEM模型。首先空间误差SEM模型的数学模式公式如下&#xff1a; y βk * x u , u λ * Wu &#xff08;为扰动项&#xff09;&#xff0c;Wu为误差(扰动项)空间…

登山第一梯:使用rviz显示bag包中的点云数据

第一步&#xff0c;连接ros master&#xff1a; roscore ​​​​​第二步&#xff0c;打开rviz&#xff08;默认的rviz&#xff09; rosrun rviz rviz ​第三步&#xff0c;查看bag包信息&#xff0c;获取topic信息 rosbag info [bag包路径] 有三个topic&#xff0c;分别时/bp…