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。

相关推荐
雪域迷影1 小时前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
福大大架构师每日一题2 小时前
22.1 k8s不同role级别的服务发现
容器·kubernetes·服务发现
莹雨潇潇2 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
Pythonliu72 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我3 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
tangdou3690986553 小时前
1分钟搞懂K8S中的NodeSelector
云原生·容器·kubernetes
小O_好好学4 小时前
CentOS 7文件系统
linux·运维·centos
哲伦贼稳妥5 小时前
一天认识一个硬件之机房地板
运维·网络·经验分享·其他
john_hjy5 小时前
11. 异步编程
运维·服务器·javascript
x晕x5 小时前
Linux dlsym符号查找疑惑分析
linux·运维·服务器