秋招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. 更新系统
sudo yum update -y
2. 安装必要的依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3. 添加 Docker 的仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4. 安装 Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
5. 启动并配置 Docker
sudo systemctl start docker
sudo systemctl enable docker
6. 验证 Docker 安装是否成功
sudo docker --version
# 输出示例:Docker version 20.10.7, build f0df350
三、Docker的使用
1. Docker 镜像 (Images)
(1)介绍
每个镜像包含一个完整的文件系统和运行应用程序所需的所有内容,包括代码、运行时、库、环境变量和配置文件。镜像是 Docker 中实现便携性和一致性的核心组件。
(2)常见命令
- 拉取镜像:从 Docker Hub 或其他仓库拉取镜像
docker pull mysql(镜像名称):latest(镜像版本)
- 列出本地镜像
docker images
- 构建镜像:使用 Dockerfile 构建自定义镜像
Dockerfile 示例:
# 使用官方的 Nginx 镜像作为基础镜像
FROM nginx:latest
# 复制本地的 index.html 到镜像中的 /usr/share/nginx/html/
COPY index.html /usr/share/nginx/html/
# 暴露端口 80
EXPOSE 80
镜像构建命令
docker build -t my-nginx(镜像名) .(Dockerfile文件所在目录)
- 删除镜像
docker rmi <image_id>
2. Docker 容器
(1)介绍
Docker 容器是 Docker 平台的核心组件之一。容器是轻量级、可移植的封装单元,它将应用程序及其所有依赖项打包在一起,以确保在任何环境中都可以一致地运行。Docker 容器使用操作系统级别的虚拟化,不像传统的虚拟机需要完整的操作系统,从而更高效地利用系统资源。
(2)常见命令
- 运行容器:从镜像运行一个新的容器
docker run -it mysql(镜像名):latest(镜像版本) /bin/bash
- 后台运行容器:使用 -d 参数在后台运行容器(这种比较常用)
docker run -d -p 80:80 mysql(容器名)
- 查看运行中的容器
docker ps [-a](查看所有容器)
- 停止容器
docker stop <container_id>
- 删除容器
docker rm <container_id>
- 进入运行中的容器
docker exec -it <container_id>
3. Docker 数据卷 (Volumes)
(1)介绍
Docker 数据卷(Volumes)是 Docker 中用于持久化和共享容器数据的机制。Docker 数据卷是一个虚拟目录,将宿主机(docker)目录映射到容器内目录,方便操作容器内文件。
(2)常见命令
- 创建数据卷
docker volume create my-volume(数据卷名)
- 挂载数据卷
注:一定要在创建时挂载,后续不能添加
docker run -d -p 80:80 -v my-volume:/usr/share/nginx/html my-nginx
- 查看数据卷
docker volume ls
- 删除数据卷
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)常见命令
- 创建网络
docker network create my-network
- 在网络中运行容器
docker run -d --name web --network my-network nginx:latest
docker run -d --name redis --network my-network redis:latest
- 查看网络
docker network ls
- 删除网络
docker network rm my-network
5. Docker Compose
(1)介绍
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 YAML 文件(通常命名为 docker-compose.yml),用户可以描述应用程序的服务、网络和卷。然后,通过简单的命令,用户可以创建并启动所有的服务。
(2)安装
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 文件
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
redis:
image: redis:latest
- 使用 Docker Compose 启动服务
docker-compose up -d
- 查看服务状态
docker-compose ps
- 停止并删除服务
docker-compose down
原文地址:https://blog.csdn.net/qq_50604294/article/details/140523926
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!