SpringCloud-Docker安装与详解

举报
Damon小智 发表于 2024/03/01 01:10:38 2024/03/01
【摘要】 Docker 是一款强大的容器化平台,通过其轻量级的容器技术,使应用程序的开发、部署和管理变得更加便捷和高效。本文将深入探讨 Docker 的安装过程,并详细解析其基本概念、组件及常用命令,以帮助读者充分理解和熟练使用 Docker。企业部署一般都是采用 Linux 操作系统,而其中又数 CentOS 发行版占比最多,因此我们在 CentOS 下安装 Docker。

一、Docker里的基本概念

1、容器(Container)

容器是 Docker 的核心概念之一。它是一个独立运行的软件包,包含应用程序和其所有依赖项,例如库、运行时和系统工具。容器通过 Docker 引擎进行管理,具有轻量级和可移植性的特点。

这么说是不是有点抽象,下面举个生动点的例子:

想象一下容器就像是一个移动的盒子,但不是普通的盒子,而是一个包含应用程序、运行环境以及所有所需依赖的特殊盒子。这个盒子具有一定的隔离性,就像是一个独立的小世界,里面的应用程序不会干扰外部的系统。

在这个盒子里,应用程序可以自己携带所需的一切,无论是代码、库、配置文件还是其他依赖,就像是一个自给自足的小单元。这使得这个盒子可以在任何支持容器技术的地方运行,而不会受到外部环境的影响。 

容器就像是移动的、自包含的应用程序集装箱,可以在任何地方顺利运行,让软件的开发、测试和部署变得更加简便和可靠。

容器的好处在于它们轻量、快速,而且非常灵活。你可以在一台计算机上开发和测试容器,然后轻松地将它们部署到另一台计算机上,而不必担心环境差异。这种便携性和一致性让容器成为现代软件开发和部署的理想选择。


2、镜像(Image)

镜像是容器的基础,是一个只读的文件,包含了应用程序运行所需的所有信息,包括代码、运行时、库、环境变量等。镜像是容器的模板,可以通过它创建并运行多个相同的容器。

镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。

镜像是分层结构,每一层称为一个Layer

Baselmage层:包含基本的系统函数库、环境变量、文件系统。

Entrypoint:入口,是镜像中应用启动的命令。

其它:在Baselmage基础上添加依赖、安装程序、完成整个应用的安装和配置。

除了很多被封装好的镜像外,我们也可以用 Dockerfile 来自定义镜像,这里仅作了解。


3、仓库(Repository)

Docker 仓库是用来存储和共享镜像的地方。

官方仓库是Docker Hub,用户可以在其中找到并下载各种官方和社区创建的镜像。

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

公共仓库:例如 Docker 官方的 Docker Hub,国内也有一些云服务商提供类似于 Docker Hub 的公开服务,比如网易云镜像服务、DaoCloud 镜像服务、阿里云镜像服务等。

私有仓库:除了使用公开仓库外,用户还可以在本地搭建私有 Docker Registry,企业自己的镜像最好是采用私有 Docker Registry 来实现。

我们可以根据需要,通过更改镜像仓库源的方式,灵活选择镜像仓库。


二、安装Docker

Docker 分为 CE EE 两大版本。CE 即社区版(免费,支持周期7个月)EE 即企业版,强调安全,付费使用,支持周期24个月。Docker CE 分为 stable test nightly 三个更新频道。官方网站上有各种环境下的安装指南,这里主要介绍 Docker CE CentOS 上的安装。

Docker CE 支持64位版本 CentOS 7,并且要求内核版本不低于 3.10CentOS 7 满足最
低内核的要求,所以我们在 CentOS 7 安装Docker

1、卸载已有的Docker

如果系统中已经安装了旧版本的 Docker,建议先将其卸载。

可以使用以下命令:

yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-selinux \
    docker-engine-selinux \
    docker-engine \
    docker-ce

这里的 \ 是换行的意思,告诉计算机我们的一条指令在当前行没有结束,需要继续读取下一行。 

这个命令卸载系统中已存在的 Docker 软件包。但不会删除容器、镜像等数据。


2CentOS7安装Docker

接下来,我们将安装 Docker

首先,安装一些 yum 工具:

yum install -y yum-utils \
    device-mapper-persistent-data \
    1vm2 --skip-broken

然后,更新本地镜像源为阿里源:

#设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

安装 Docker

sudo yum install -y docker-ce #-y表示按默认配置安装

3、启动Docker

关闭防火墙

Docker应用需要用到各种端口,逐一去修改防火墙设置。 非常麻烦,因此建议大家直接关
闭防火墙!启动docker前,一定要关闭防火墙!!!

#关闭
systemct1 stop fi rewalld
#禁止开机启动防火墙
systemct1 disable firewalld

启动Docker

启动 Docker 服务,并设置为开机自启:

sudo systemctl start docker
sudo systemctl enable docker

现在,Docker 已经成功安装并启动在 CentOS 7 上。

输入命令,可以查看 Docker 版本:

docker -v

这将显示 Docker 的版本信息,确认安装成功。

至此,我们已经完成了 CentOS 7 Docker 的安装和配置。


配置镜像加速器

由于 Docker 的官方镜像源在国外,网速较差,我们可以根据需要设置国内镜像:
(建议自行百度,查阅参考 阿里云官方的最新镜像加速文档


三、Docker的基本操作

1、容器操作

Docker 提供了许多命令来管理容器,以下是一些常见的 Docker 容器操作命令:

创建容器

docker run [options] image [command] [args...]

例如:

docker run -it ubuntu /bin/bash

这将创建一个以交互模式运行的 Ubuntu 容器。


列出所有容器

docker ps -a

这将列出所有容器的详细信息,包括运行中的和已停止的容器。


停止容器

docker stop container_id

通过容器的 ID 或者名称停止运行中的容器。


删除容器

docker rm container_id

删除已停止的容器。 


启动已停止的容器

docker start container_id

通过容器的 ID 或者名称启动已停止的容器。


重启容器

docker restart container_id

通过容器的 ID 或者名称重启容器。


进入容器

docker exec -it container_id /bin/bash

以交互模式进入正在运行的容器。


查看容器日志

docker logs container_id

查看容器的标准输出。


查看容器统计信息

docker stats container_id

查看容器的资源使用情况。


查看容器详细信息

docker inspect container_id

查看有关容器的详细信息,包括配置、网络设置等。


复制文件到/从容器

docker cp source_path container_id:destination_path

docker cp container_id:source_path destination_path

将文件复制到或从容器中。


2、镜像操作

Docker 提供了丰富的命令来管理镜像,以下是一些常见的 Docker 镜像操作命令:

查找镜像

docker search image_name

Docker Hub 上查找镜像。


拉取镜像

docker pull image_name

Docker Hub 拉取指定的镜像。


列出本地镜像

docker images

列出本地已经下载的镜像。


删除本地镜像

docker rmi image_id

删除本地的镜像。


构建镜像

docker build -t image_name:tag

根据当前目录中的 Dockerfile 构建一个新的镜像。


推送镜像到仓库

docker push image_name:tag

将本地的镜像推送到远程镜像仓库。


查看镜像历史记录

docker history image_name


导出镜像为文件

docker save -o output_file.tar.gz image_name

将镜像打包为一个文件。 


 从文件中导入镜像

docker load -i input_file.tar.gz

从文件中导入一个镜像。 


 查看镜像详细信息

docker inspect image_name

查看有关镜像的详细信息,包括配置、挂载点等。


3、数据卷操作

数据卷的建立是为了解决容器与数据耦合的问题。Docker 数据卷是一种用于在容器之间共享和持久化数据的机制。它提供了一种绕过容器文件系统的方式,将数据存储在主机上,并使多个容器能够访问相同的数据。

数据卷 (volume) 是一个虚拟目录,指向宿主机文件系统中的某个目录。

Docker 数据卷的原理是通过将容器与主机上的目录或预定义的卷进行关联,使得数据能够持久化保存,并且可以被多个容器之间共享。这种机制为容器提供了灵活且可靠的数据存储方式。


以下是一些常见的 Docker 数据卷操作命令:

创建数据卷

docker volume create volume_name

使用 docker volume create 命令可以创建一个新的数据卷。

每个数据卷都有一个唯一的名称,用于标识它。


列出所有数据卷

docker volume ls

列出所有数据卷的信息。


查看数据卷详细信息

docker volume inspect volume_name

查看有关数据卷的详细信息,包括挂载点等。


删除数据卷

docker volume rm volume_name

删除指定的数据卷。


将数据卷挂载到容器

当运行容器时,可以使用 -v –volume 选项将一个或多个数据卷挂载到容器的指定路径。这样,容器就可以访问数据卷上的数据:

docker run -v volume_name:/container_path image_name

这将把数据卷 volume_name 挂载到容器的 /container_path

数据卷的挂载具有共享性和持久性:

多个容器可以同时挂载同一个数据卷,实现数据在容器之间的共享。这样,它们可以读取和写入相同的数据卷,实现数据的一致性和共享。

数据卷上的数据是持久化存储的,即使容器停止或删除,数据卷仍然存在,可以被其他容器重新挂载。这使得数据在容器的生命周期内得以保留。


从容器中复制数据到数据卷

docker cp source_path container_id:/volume_name/destination_path

将容器中的数据复制到指定的数据卷。


从数据卷中复制数据到容器

docker cp container_id:/volume_name/source_path destination_path

将数据卷中的数据复制到容器的指定路径。


挂载匿名数据卷

docker run -v /host_path image_name

使用匿名数据卷将宿主机路径 /host_path 挂载到容器。 


删除容器时保留数据卷

docker run -v volume_name:/container_path --rm image_name

在删除容器时保留数据卷。


四、Docker-Compose的使用

1Docker-Compose介绍

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个简单的  docker-compose.yml 文件帮我们快速的部署分布式应用,定义应用的服务、网络和卷等配置,而无需手动一个个创建和运行容器。

以下是一个简单的 docker-compose.yml 文件:

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  db:
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: example

通过运行 docker-compose up 命令,即可启动包含 Nginx PostgreSQL 服务的 Docker 应用。


2、部署微服务集群

为了更好地理解 Docker 的应用,我们可以通过一个简单的实战案例来深入了解。假设我们要搭建一个简单的微服务集群,包括 Nacos 作为服务注册与发现中心、MySQL 数据库、以及用户服务、订单服务和网关服务。

准备工作

确保已经安装 Docker Docker Compose。创建一个项目目录,例如 microservices,在该目录下放置你的 Docker Compose 配置文件。


编写Docker-Compose文件

创建docker-compose.yml 文件,内容如下:

version: "3.2"

services:
  nacos:
    image: nacos/nacos-server
    environment:
      MODE: standalone
    ports:
      - "8848:8848"

  mysq1:
    image: mysql:5.7.25
    environment:
      MYSQL_ROOT_PASSWORD: 123
    volumes:
      - "SPhD/mysql/data:/var/lib/mysql"
      - "SPhD/mysql/conf:/etc/mysql/conf.d/"

  userservice:
    build: ./user-service

  orderservice:
    build: ./order-service

  gateway:
    build: ./gateway
    ports:
      - "10010:10818"

构建和启动微服务集群

在项目目录中执行以下命令:

docker-compose up -d --build

通过运行 docker-compose up 命令,即可构建并启动所有定义的服务,并以后台方式运行。等待一段时间,直到所有服务完全启动。


查看微服务状态

使用以下命令查看当前运行的服务:

docker-compose ps

通过这个案例,我们可以看到 Docker 的强大之处,它使得应用的构建、运行和部署变得非常简单且可重复。


五、Docker总结

Docker 的安装非常简单,就像安装一个应用程序一样,只需使用包管理器或者 Docker Desktop,在各种操作系统上都能轻松完成。掌握 Docker 的基础知识和常用命令,能够更好地利用和理解它的功能。Docker 之所以受欢迎,是因为它提供了一种轻量级、便携且高效的容器化解决方案。它让开发者可以灵活地部署应用程序,保证在不同环境中的一致性和高效性。通过实际操作案例,我们学会了如何使用 Docker 来创建一个简单的 Web 应用,展示了它的强大功能和易用性。随着容器技术的不断进步,Docker 必将继续在现代软件开发中扮演重要角色,为开发者提供更便捷、高效的工具和环境。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。