当前位置: 首页 > news >正文

【DOCKER】-5 镜像仓库与容器编排

文章目录

  • 镜像仓库与容器编排
    • 1、registry私有仓库的使用与优化
      • 1.1 registry的定义
      • 1.2 registry私有仓库的配置
      • 1.3 registry仓库上传镜像
      • 1.4 Registry私有仓库-常用API管理
    • 2、 docker compose 容器编排
      • 2.1 docker compose 概述
      • 2.2 compose文件技巧指导
      • 2.3 服务部署、扩展和更新
      • 2.4 yaml语言介绍
        • 2.4.1 YAML语言
        • 2.4.2 文件编写格式及注意事项
        • 2.4.3 应用场景
        • 2.4.4 YAML语言格式
      • 2.5 docker compose 语法
      • 2.6 docker compose 常用命令
    • 3、compose 实践-wordpress构建
      • 3.1 安装docker compose
      • 3.2 构建wordpress
      • 3.3 网站页面

镜像仓库与容器编排

1、registry私有仓库的使用与优化

1.1 registry的定义

Docker Registry是一个用于存储和分发Docker镜像的服务,可理解为Docker镜像的仓库。

  • 作用描述:提供镜像的集中存储和管理,支持镜像的版本控制,便于团队间共享和协作。

  • 官方Registry与私有Registry:Docker官方提供了公共的Registry服务,同时企业或个人也可搭建私有的Registry服务以满足特定需求。

1.2 registry私有仓库的配置

#示例
[root@docker-lucky-cloud docker]# cat /etc/docker/daemon.json
{"log-level": "error","storage-driver": "overlay2","log-driver": "json-file","log-opts": {"max-size": "50m","max-file": "3"},"registry-mirrors": ["https://0f8a3388042b4b0ab6611ccc6e866ab3.mirror.swr.myhuaweicloud.com"],"insecure-registries": [ "http://192.168.110.160:5000"]
}{"registry-mirrors": [ "https://84c29fdcf3f34b74a2abdc40926e4c88.mirror.swr.myhuaweicloud.com"],"insecure-registries": [ "http://192.168.107.186:5000"]
}#重启docker的配置,并查看运行状态
[root@localhost ~]# systemctl daemon-reload 
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)Active: active (running) since 四 2025-07-17 11:52:25 CST; 13s agoDocs: https://docs.docker.comMain PID: 14145 (dockerd)Tasks: 10Memory: 30.9MCGroup: /system.slice/docker.service└─14145 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

1.3 registry仓库上传镜像

#启动私有镜像registry[root@localhost ~]# docker run -d \
>  -p 5000:5000 \
>  -v /var/lib/local_registry:/var/lib/registry \
>  --name local_registry \
>  registry:latest
Unable to find image 'registry:latest' locally
latest: Pulling from library/registry
0368fd46e3c6: Pull complete 
56cbcc5405f0: Pull complete 
b65b097f3c34: Pull complete 
60999dff384a: Pull complete 
e6a3228d448c: Pull complete 
Digest: sha256:45fbac229389d0ee0d2ba80c92df8a2bd5896f51950b6070b6f92e8009955268
Status: Downloaded newer image for registry:latest
b4964f1e14cab113bb1f3d97a14ac4124eac613c50c5d8a47e36cdacb0967eaa
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    22bd15417453   2 days ago     192MB
tomcat       latest    9ca267cc83c7   12 days ago    468MB
registry     latest    3c52eedeec80   3 months ago   57.7MB
centos       7         eeb6ee3f44bd   3 years ago    204MB
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE             COMMAND                   CREATED          STATUS          PORTS                                       NAMES
b4964f1e14ca   registry:latest   "/entrypoint.sh /etc…"   22 seconds ago   Up 20 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   local_registry
[root@localhost ~]# #现有的镜像
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
tomcat       latest    9ca267cc83c7   12 days ago   468MB
nginx        latest    9592f5595f2b   3 weeks ago   192MB
centos       7         eeb6ee3f44bd   3 years ago   204MB
[root@localhost ~]# #打标签
[root@localhost ~]# docker tag nginx:latest 192.168.107.186:5000/nginx:new
[root@localhost ~]# docker images
REPOSITORY                   TAG       IMAGE ID       CREATED        SIZE
192.168.107.186:5000/nginx   new       22bd15417453   2 days ago     192MB
nginx                        latest    22bd15417453   2 days ago     192MB
tomcat                       latest    9ca267cc83c7   12 days ago    468MB
registry                     latest    3c52eedeec80   3 months ago   57.7MB
centos                       7         eeb6ee3f44bd   3 years ago    204MB#上传镜像
[root@localhost ~]# docker push 192.168.107.186:5000/nginx:new 
The push refers to repository [192.168.107.186:5000/nginx]
f3cecf76da4f: Pushed 
215876b36153: Pushed 
2649de478044: Pushed 
05afaee498cf: Pushed 
c29414fee8ae: Pushed 
cff9e7c67fbb: Pushed 
1bb35e8b4de1: Pushed 
new: digest: sha256:cc15857a248b9206876724049b8cb5a53890075161ddce1fa29f266008f010cf size: 1778
[root@localhost ~]# #拉取镜像
[root@localhost ~]# docker pull 192.168.107.186:5000/nginx:new 
new: Pulling from nginx
Digest: sha256:cc15857a248b9206876724049b8cb5a53890075161ddce1fa29f266008f010cf
Status: Image is up to date for 192.168.107.186:5000/nginx:new
192.168.107.186:5000/nginx:new
[root@localhost ~]# 

1.4 Registry私有仓库-常用API管理

#查看Registry列表
[root@localhost ~]# curl 127.0.0.1:5000/v2/_catalog
{"repositories":["nginx"]}#查看镜像tag列表
[root@localhost ~]# curl -X GET 127.0.0.1:5000/v2/nginx/tags/list
{"name":"nginx","tags":["new"]}

2、 docker compose 容器编排

2.1 docker compose 概述

  • 定义:Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,使用YAML文件来配置应用程序的服务。
  • 核心功能:通过Compose,可以轻松地定义、构建、启动、停止和重启多容器应用程序,实现容器间的依赖管理和网络配置。
  • 应用场景:Compose适用于开发、测试和生产环境中,可以简化复杂的容器部署流程,提高运维效率。

2.2 compose文件技巧指导

  • 文件格式:Compose文件采用YAML语法,具有简洁明了的特点,易于阅读和编写。
  • 服务定义:在Compose文件中,可以定义多个服务,每个服务对应一个或多个容器,通过指定镜像、端口、环境变量等参数来配置容器。
  • 网络配置:通过networks关键字可以定义网络,实现容器间的互联互通。
  • 依赖关系:可以使用depends_on关键字来定义服务之间的依赖关系,确保在启动服务时按照正确的顺序进行。

2.3 服务部署、扩展和更新

  • 部署策略:可以使用Compose命令行工具进行服务的部署,支持一键启动、停止和重启等操作。
  • 扩展策略:通过scale关键字可以轻松地扩展服务的实例数量,实现负载均衡和高可用性。
  • 更新策略:Compose支持滚动更新策略,可以在不中断服务的情况下逐步更新容器镜像或配置。

2.4 yaml语言介绍

2.4.1 YAML语言
  1. YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。
  2. 类似于 json 数据描述语言,语法比 json 简单的很多。
  3. YAML 数据结构通过缩进来表示,连续的项目通过减号来表示。
  4. 键值对用冒号分隔,数组用中括号 [] 括起来, hash 用花括号 {} 括起来
2.4.2 文件编写格式及注意事项
  • 大小写敏感
  • 通过缩进表示层级关系
  • 不支持制表符tab键缩进,只能用空格缩进
  • 缩进空格数不重要,只要相同层级左对齐,通常开头缩进2个空格
  • 用#注释
  • 符号字符后缩进1个空格,如冒号 : 、逗号 , 、横杠 -
  • 如果包含特殊字符用单引号(‘’)引起来会作为普通字符串处理,双引号(“”): 特殊字符作为本身想表示的意思
2.4.3 应用场景
  1. 配置文件:**容器编排工具:**Kubernetes 的配置文件(如 Deployment、Service、ConfigMap、Secret 等)几乎全部采用 YAML 格式。这些文件定义了如何在 Kubernetes 集群中部署、管理、配置和扩展应用程序。

    CI/CD **工具:**许多持续集成/持续部署(CI/CD)工具(如 Jenkins、GitLab CI、Tekton 等)使用 YAML 文件来定义管道、任务和触发器。

    **其他云原生工具:**如 Prometheus 的监控配置、Istio 的服务网格配置等,也常采用 YAML 格式。

  2. 数据交换:

  • API配置:某些云原生API可能接受YAML格式的请求体,用于传递复杂的配置或参数。

  • 配置共享:团队间或项目间可共享YAML格式的配置文件,以确保一致性并简化配置管理。

  1. 序列化与反序列化
  • 状态持久化:应用程序可能将当前状态或配置序列化为YAML格式,存储在文件或数据库中,以便后续恢复。

  • 测试数据:测试框架可能使用YAML文件来存储和管理测试用例数据,提高测试的可维护性和可读性。

2.4.4 YAML语言格式
  • 大小写敏感

  • 通过缩进表示层级关系

  • 不支持制表符 tab 键缩进,只能使用空格缩进

  • 缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格

  • 用 # 号注释

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

  • 如果包含特殊字符用单引号(‘’)引起来会作为普通字符串处理,双引号(“”): 特殊字符作为本身想表示的意思

示例:

version: '3.8'
services:webapp:image: my-webapp-image:latestports:- "5000:5000"environment:- DEBUG=1- DB_HOST=databasedepends_on:- databasedatabase:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: exampleMYSQL_DATABASE: mydatabase

2.5 docker compose 语法

在这里插入图片描述

请添加图片描述

2.6 docker compose 常用命令

请添加图片描述

请添加图片描述

3、compose 实践-wordpress构建

3.1 安装docker compose

[root@localhost ~]# yum install epel-release.noarch -y
已加载插件:fastestmirror, langpacks
Running transaction...已安装:epel-release.noarch 0:7-14                                               
完毕!
[root@localhost ~]# #安装dockercompsoe
yum -y install docker-compose...作为依赖被安装:python3.x86_64 0:3.6.8-21.el7_9                     python3-libs.x86_64 0:3.6.8-21.el7_9             
.....
完毕![root@localhost ~]# 

3.2 构建wordpress

[root@localhost ~]# mkdir /opt/wordpress-compose
[root@localhost ~]# cd /opt/wordpress-compose/
[root@localhost wordpress-compose]# ls
[root@localhost wordpress-compose]# touch docker-compose.yaml
[root@localhost wordpress-compose]# ls
docker-compose.yaml
[root@localhost wordpress-compose]# vim docker-compose.yaml####version: '3.1'services:wordpress:image: wordpressrestart: alwaysports:- 8000:80environment:WORDPRESS_DB_HOST: dbWORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: wordpressWORDPRESS_DB_NAME: wordpressvolumes:- /opt/wordpress:/var/www/htmldb:image: mysql:5.7restart: alwaysenvironment:MYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: wordpressMYSQL_RANDOM_ROOT_PASSWORD: '1'volumes:- /opt/mysql:/var/lib/mysql####[root@localhost wordpress-compose]# docker-compose up -d
Creating network "wordpresscompose_default" with the default driver
Pulling wordpress (wordpress:latest)...
....
Status: Downloaded newer image for mysql:5.7
Creating wordpresscompose_wordpress_1 ... done
Creating wordpresscompose_db_1        ... done
[root@localhost wordpress-compose]# #查看状态
[root@localhost wordpress-compose]# docker-compose ps Name                          Command               State                Ports             
-------------------------------------------------------------------------------------------------------
wordpresscompose_db_1          docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp            
wordpresscompose_wordpress_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:8000->80/tcp,:::8000->80/tcp                          
[root@localhost wordpress-compose]# 

3.3 网站页面

请添加图片描述

http://www.lryc.cn/news/591704.html

相关文章:

  • docker中 contriner 和 images 什么关系
  • Redis学习系列之—— JDHotKey 热点缓存探测系统
  • maven本地仓库清缓存py脚本
  • 嵌入式学习-PyTorch(6)-day23
  • ZYNQ UltraScale+ MPSoC芯片 pcie switch级联ssd高速存储方案
  • Zabbix 分布式监控系统架构设计与优化
  • C++拷贝构造
  • 嵌入式学习-PyTorch(7)-day23
  • 突破限制:使用 Claude Code Proxy 让 Claude Code 自由连接任意模型
  • 【分治思想解题框架】【分解、求解、合并】
  • 如何在KL散度的意义下解释极大似然估计(二)
  • Kiro vs Cursor: AI IDE 终极对比指南
  • Redis7 底层数据结构解析
  • 数据呈现高阶技巧:散点图与桑基图的独特价值
  • 在CentOS7.9服务器上安装.NET 8.0 SDK
  • .Net将控制台的输出信息存入到日志文件按分钟生成日志文件
  • 编译原理第六到七章(知识点学习/期末复习/笔试/面试)
  • Docker-Beta?ollama的完美替代品
  • 如何将 ONLYOFFICE 文档集成到使用 Laravel 框架编写的 PHP 网络应用程序中
  • NO.7数据结构树|线索二叉树|树森林二叉树转化|树森林遍历|并查集|二叉排序树|平衡二叉树|哈夫曼树|哈夫曼编码
  • vue3 自定义vant-calendar header/footer/maincontent
  • Java数组中相关查找排序算法(1)
  • 力扣 hot100 Day47
  • 网络安全威胁下的企业困境与破局技术实践
  • Linux内核内存管理相关的配置参数
  • 电商行业如何做好网络安全工作?
  • 【web安全】DVWA反射型XSS漏洞分析与利用
  • RGBA图片格式转换为RGB格式(解决convert转换的失真问题)
  • 利用node.js在本地搭建简易http服务器
  • 快慢指针的应用