DockerCompose和Docker镜像仓库


个人名片:

博主:酒徒ᝰ.
个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志:三人行,必有我师焉。

本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看

目录

  • 一、初识DockerCompose
    • [1. 什么是DockerCompose](#1. 什么是DockerCompose)
    • [2. Docker Compose的用途](#2. Docker Compose的用途)
    • [3. Docker Compose的基本概念](#3. Docker Compose的基本概念)
    • [4. Docker Compose的使用步骤](#4. Docker Compose的使用步骤)
    • [5. 模型](#5. 模型)
    • [6. 案例](#6. 案例)
  • 二、部署为服务集群
    • [1. 什么是Docker镜像仓库?](#1. 什么是Docker镜像仓库?)
    • [2. Docker镜像仓库的用途](#2. Docker镜像仓库的用途)
    • [3. 常见的Docker镜像仓库](#3. 常见的Docker镜像仓库)
    • [4. 搭建私有镜像仓库](#4. 搭建私有镜像仓库)
    • [5. 向镜像仓库推送和拉取镜像](#5. 向镜像仓库推送和拉取镜像)

一、初识DockerCompose

1. 什么是DockerCompose

Docker Compose是一个用于定义和管理多个Docker容器的工具。它允许您使用YAML文件来配置应用程序的各个服务,然后使用一个简单的命令就可以启动、停止和管理这些服务。

Docker Compose使用了Docker的基础架构,因此可以在任何支持Docker的操作系统上运行。它的目标是简化容器化应用程序的部署流程,提供一种简单而强大的方式来管理容器和它们之间的依赖关系。
Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!

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

2. Docker Compose的用途

Docker Compose可以用于各种场景,包括:

  • 开发环境的快速部署:可以使用Docker Compose在本地快速部署开发环境,包括数据库、缓存和其他依赖项。这样可以减少配置和依赖项的问题,并提高开发效率。

  • 多容器应用程序的管理:如果您的应用程序由多个容器组成(例如前端和后端),Docker Compose可以简化容器之间的通信和协调,确保它们正确地启动和停止。

  • 多环境部署:Docker Compose可以轻松地在不同的环境中部署应用程序,包括开发、测试和生产环境。只需在不同环境中使用不同的Compose文件即可。

3. Docker Compose的基本概念

在使用Docker Compose之前,有几个基本概念需要了解:

  • 服务(Service):一个服务可以由一个或多个容器组成。它定义了容器的映像、端口映射、环境变量等配置信息。

  • 映像(Image):一个映像是一个可执行的容器,它包含了应用程序和它的依赖项。

  • 容器(Container):一个容器是一个独立运行的实例,它由一个映像创建而成。

  • Compose文件:一个Compose文件是一个YAML格式的文件,用于定义服务和它们的配置。它包含了服务的名称、映像、端口映射、环境变量等信息。

4. Docker Compose的使用步骤

使用Docker Compose可以分为以下几个步骤:

  • 编写Compose文件:根据您的应用程序需求,编写一个Compose文件。该文件将指定服务的名称、映像、端口映射、环境变量等信息。

  • 构建服务:使用docker-compose build命令构建服务的映像。

  • 启动服务:使用docker-compose up命令启动服务。如果需要后台运行,可以使用-d选项。

  • 停止服务:使用docker-compose down命令停止和删除服务。

5. 模型

DockerCompose的详细语法参考官网:https://docs.docker.com/compose/compose-file

6. 案例

将之前学习的cloud-demo微服务集群利用DockerCompose部署

实现思路如下:

  1. 查看课前资料提供的cloud-demo文件夹,里面已经编写好了docker-compose文件
  2. 修改自己的cloud-demo项目,将数据库、nacos地址都命名为docker-compose中的服务名
  3. 使用maven打包工具,将项目中的每个微服务都打包为app.jar
  4. 将打包好的app.jar拷贝到cloud-demo中的每一个对应的子目录中
  5. 将cloud-demo上传至虚拟机,利用 docker-compose up -d 来部署

总结

DockerCompose有什么作用?

帮助我们快速部署分布式应用,无需一个个微服务去构建镜像和部署。
Docker Compose是一个用于定义和管理多个Docker容器的工具,它通过YAML文件来配置服务和它们的依赖关系。它可以大大简化容器化应用程序的部署过程,提供一种简单而强大的方式来管理容器和它们之间的通信。

二、部署为服务集群

1. 什么是Docker镜像仓库?

Docker镜像仓库是用于存储、管理和分发Docker镜像的集中化存储库。它可以存储私有或公共镜像,并提供像GitHub这样的代码仓库一样的功能,使用户能够方便地共享和获取镜像。
镜像仓库是Docker生态系统中不可或缺的一部分。它使得开发人员可以共享、发布和部署容器镜像,从而加快了应用程序的开发和部署过程。

2. Docker镜像仓库的用途

Docker镜像仓库有以下几种常见的用途:

  • 共享和获取镜像:镜像仓库允许用户上传和下载镜像,方便共享和获取已经构建好的镜像。

  • 镜像版本控制:镜像仓库通常会记录不同版本的镜像,以便用户可以轻松地回滚到先前的版本。

  • 自动构建和部署:镜像仓库通常与持续集成和持续部署工具集成,可以自动构建和部署新的镜像版本。

  • 安全性和权限控制:镜像仓库可以实施权限控制,确保只有授权人员才能上传和访问镜像。

3. 常见的Docker镜像仓库

在Docker中,有几个常见的镜像仓库可供选择:

  • Docker Hub:Docker官方提供的公共镜像仓库,包含了数以万计的常用镜像。可以通过docker pull命令轻松地获取镜像。Copy

  • AWS Elastic Container Registry (ECR):亚马逊AWS提供的托管式 Docker 镜像仓库,可与AWS的其他服务无缝集成。

  • Google Container Registry (GCR):谷歌提供的托管式 Docker 镜像仓库,可与Google Cloud Platform (GCP) 的其他服务一起使用。

  • Harbor:一个开源的企业级Docker镜像仓库,提供了丰富的功能,如安全性、权限控制和自动构建。

4. 搭建私有镜像仓库

镜像仓库( Docker Registry )有公共的和私有的两种形式:

  • 公共仓库:例如Docker官方的 Docker Hub,国内也有一些云服务商提供类似于 Docker Hub 的公开服务,比如 网易云镜像服务、DaoCloud 镜像服务、阿里云镜像服务等。
  • 私有仓库,用户可以在本地搭建私有 Docker Registry。企业自己的镜像最好是采用私有Docker Registry来实现。

5. 向镜像仓库推送和拉取镜像

推送镜像到私有镜像服务必须先tag,步骤如下:

重新tag本地镜像,名称前缀为私有仓库的地址:

sh 复制代码
docker tag nginx:latest [ip地址]:8080/nginx:1.0

推送镜像

sh 复制代码
docker push ip:8080/nginx:1.0

拉取镜像

sh 复制代码
docker pull ip:8080/nginx:1.0

总结

Docker镜像仓库是用于存储、管理和分发Docker镜像的集中化存储库。它为用户提供共享和获取镜像的功能,并可与持续集成和持续部署工具集成,以实现自动构建和部署。常见的Docker镜像仓库包括Docker Hub、AWS ECR和GCR。

相关推荐
lbb 小魔仙15 分钟前
Ubuntu 22.04 安装 Docker 完整步骤(附镜像加速配置)
linux·ubuntu·docker
Full Stack Developme3 小时前
Linux 多种压缩格式,优缺点和适用场景
linux·运维·服务器
yBmZlQzJ8 小时前
财运到内网穿透域名解析技术机制与中立评估
运维·经验分享·docker·容器·1024程序员节
Shanxun Liao8 小时前
Cenots 7.9 配置多台 SSH 互信登陆免密码
linux·运维·ssh
j_xxx404_8 小时前
Linux:第一个程序--进度条|区分回车与换行|行缓冲区|进度条代码两个版本|代码测试与优化
linux·运维·服务器
一点晖光8 小时前
jenkins优化记录
运维·jenkins
最贪吃的虎9 小时前
Git: rebase vs merge
java·运维·git·后端·mysql
yBmZlQzJ9 小时前
内网穿透工具通过端口转发实现内外网通信
运维·经验分享·docker·容器·1024程序员节
DeepHacking9 小时前
Overleaf 本地Docker部署
运维·docker·容器
llilian_1610 小时前
总线授时卡 CPCI总线授时卡的工作原理及应用场景介绍 CPCI总线校时卡
运维·单片机·其他·自动化