秋招Java后端开发冲刺——微服务基础篇(Docker)

一、Docker介绍

1. Docker

Docker是一组平台即服务(PaaS)的产品。它基于操作系统层级的虚拟化技术,将软件与其依赖项打包为容器。托管容器的软件称为Docker引擎。Docker能够帮助开发者在轻量级容器中自动部署应用程序,并使得不同容器中的应用程序彼此隔离,高效工作。
2. 特点

  • 轻量级:Docker 容器共享主机操作系统内核,因此比传统虚拟机更轻量。容器的启动和停止非常快速。
  • 可移植性:Docker 容器可以在任何支持 Docker 的环境中运行,包括开发、测试和生产环境。通过容器,开发者可以确保应用在不同环境中的一致性。
  • 隔离性:每个容器都有独立的文件系统、进程和网络堆栈。容器之间的隔离确保了应用的安全性和稳定性。
  • 自动化:Docker 提供了 Dockerfile 和 Docker Compose 工具,用于自动化构建和管理容器。持续集成和持续部署(CI/CD)可以与 Docker 无缝集成。
  • 高效的资源利用:容器共享操作系统内核和只读层,因此比虚拟机使用更少的资源。支持内存、CPU 等资源的限制和优先级设置。
  • 快速部署:通过 Docker,应用程序可以快速部署,减少从代码提交到应用上线的时间。支持增量镜像,提高镜像构建和传输效率。
  • 易于管理:Docker 提供了丰富的命令行工具和图形化界面,简化了容器的管理。集成了容器编排工具(如 Kubernetes),实现容器的自动化管理。
  • 丰富的生态系统:Docker Hub 提供了大量的官方和社区镜像,可以直接拉取使用。支持自定义镜像仓库,便于企业内部镜像管理。
  • 支持微服务架构:Docker 非常适合构建和部署微服务架构,提供了服务之间的隔离和独立扩展能力。通过 Docker Compose 和 Kubernetes 等工具,可以方便地管理微服务应用。
  • 开源和社区支持:Docker 是一个开源项目,拥有活跃的社区和丰富的文档资源。社区贡献了大量的工具和插件,扩展了 Docker 的功能和使用场景。

二、Docker的下载安装

本文以CentOS操作系统为例,介绍Docker的安装。
:在进行安装之前,还需要下载安装centos虚拟机。
1. 更新系统

bash 复制代码
sudo yum update -y

2. 安装必要的依赖包

bash 复制代码
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3. 添加 Docker 的仓库

bash 复制代码
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4. 安装 Docker

bash 复制代码
sudo yum install -y docker-ce docker-ce-cli containerd.io

5. 启动并配置 Docker

bash 复制代码
sudo systemctl start docker
sudo systemctl enable docker

6. 验证 Docker 安装是否成功

bash 复制代码
sudo docker --version
# 输出示例:Docker version 20.10.7, build f0df350

三、Docker的使用

1. Docker 镜像 (Images)

(1)介绍

每个镜像包含一个完整的文件系统和运行应用程序所需的所有内容,包括代码、运行时、库、环境变量和配置文件。镜像是 Docker 中实现便携性和一致性的核心组件。

(2)常见命令

  • 拉取镜像:从 Docker Hub 或其他仓库拉取镜像
bash 复制代码
docker pull mysql(镜像名称):latest(镜像版本)
  • 列出本地镜像
bash 复制代码
docker images
  • 构建镜像:使用 Dockerfile 构建自定义镜像
    Dockerfile 示例:
bash 复制代码
# 使用官方的 Nginx 镜像作为基础镜像
FROM nginx:latest
# 复制本地的 index.html 到镜像中的 /usr/share/nginx/html/
COPY index.html /usr/share/nginx/html/
# 暴露端口 80
EXPOSE 80

镜像构建命令

bash 复制代码
docker build -t my-nginx(镜像名) .(Dockerfile文件所在目录)
  • 删除镜像
bash 复制代码
docker rmi <image_id>

2. Docker 容器

(1)介绍

Docker 容器是 Docker 平台的核心组件之一。容器是轻量级、可移植的封装单元,它将应用程序及其所有依赖项打包在一起,以确保在任何环境中都可以一致地运行。Docker 容器使用操作系统级别的虚拟化,不像传统的虚拟机需要完整的操作系统,从而更高效地利用系统资源。

(2)常见命令

  • 运行容器:从镜像运行一个新的容器
bash 复制代码
docker run -it mysql(镜像名):latest(镜像版本) /bin/bash
  • 后台运行容器:使用 -d 参数在后台运行容器(这种比较常用)
bash 复制代码
docker run -d -p 80:80 mysql(容器名)
  • 查看运行中的容器
bash 复制代码
docker ps [-a](查看所有容器)
  • 停止容器
bash 复制代码
docker stop <container_id>
  • 删除容器
bash 复制代码
docker rm <container_id>
  • 进入运行中的容器
bash 复制代码
docker exec -it <container_id>

3. Docker 数据卷 (Volumes)

(1)介绍

Docker 数据卷(Volumes)是 Docker 中用于持久化和共享容器数据的机制。Docker 数据卷是一个虚拟目录,将宿主机(docker)目录映射到容器内目录,方便操作容器内文件。

(2)常见命令

  • 创建数据卷
bash 复制代码
docker volume create my-volume(数据卷名)
  • 挂载数据卷
    :一定要在创建时挂载,后续不能添加
bash 复制代码
docker run -d -p 80:80 -v my-volume:/usr/share/nginx/html my-nginx
  • 查看数据卷
bash 复制代码
docker volume ls
  • 删除数据卷
bash 复制代码
docker volume rm my-volume

4. Docker 网络 (Networks)

(1)介绍

Docker 网络(Networks)是 Docker 中用于连接容器和管理其通信的系统。它允许容器之间相互通信以及与外部网络连接。Docker 网络提供了多种驱动程序来满足不同的网络需求。

(2)类型

网络类型 描述 示例命令
Bridge 默认网络类型。容器连接到同一桥接网络可以相互通信,但与外部网络隔离。 docker network create my-bridge-network
Host 容器与宿主机共享网络栈。适用于需要高性能网络通信的场景。 docker run --network host nginx
Overlay 用于 Docker Swarm 集群中,支持多主机容器通信。适用于跨多主机的分布式应用。 docker network create -d overlay my-overlay-network
Macvlan 允许容器直接连接到物理网络,具有自己的 MAC 地址。适用于需要直接连接到物理网络的场景。 docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 my-macvlan-network
None 容器不进行网络配置。适用于完全自定义网络设置的场景。 docker run --network none nginx

(3)常见命令

  • 创建网络
bash 复制代码
docker network create my-network
  • 在网络中运行容器
bash 复制代码
docker run -d --name web --network my-network nginx:latest
docker run -d --name redis --network my-network redis:latest
  • 查看网络
bash 复制代码
docker network ls
  • 删除网络
bash 复制代码
docker network rm my-network

5. Docker Compose

(1)介绍

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 YAML 文件(通常命名为 docker-compose.yml),用户可以描述应用程序的服务、网络和卷。然后,通过简单的命令,用户可以创建并启动所有的服务。

(2)安装

bash 复制代码
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

(3)使用

  • 创建 Docker Compose 文件
bash 复制代码
version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  redis:
    image: redis:latest
  • 使用 Docker Compose 启动服务
bash 复制代码
docker-compose up -d
  • 查看服务状态
bash 复制代码
docker-compose ps
  • 停止并删除服务
bash 复制代码
docker-compose down
相关推荐
Chase_Mos2 小时前
Spring 必会之微服务篇(1)
java·spring·微服务
小林学习编程4 小时前
SpringBoot校园失物招领信息平台
java·spring boot·后端
撸码到无法自拔4 小时前
docker常见命令
java·spring cloud·docker·容器·eureka
heart000_15 小时前
IDEA 插件推荐:提升编程效率
java·ide·intellij-idea
ŧ榕树先生5 小时前
查看jdk是否安装并且配置成功?(Android studio安装前的准备)
java·jdk
未来的JAVA高级开发工程师5 小时前
适配器模式
java
LUCIAZZZ5 小时前
JVM之内存管理(一)
java·jvm·spring·操作系统·springboot
D_aniel_6 小时前
排序算法-计数排序
java·排序算法·计数排序
极小狐6 小时前
极狐GitLab 通用软件包存储库功能介绍
java·数据库·c#·gitlab·maven
旧故新长6 小时前
Browserless 快速上手
java