Docker 是一个轻量化的容器技术,它提供了一个独立的环境容器,用于打包和运行应用程序及其依赖。虽然 Docker 容器与虚拟机在功能上有相似之处(如提供隔离的运行环境),但 Docker 容器直接运行在宿主机的操作系统内核上,而不是通过虚拟化硬件来实现,因此更加轻量、快速和高效。Docker 镜像可以在任何支持 Docker 的环境中运行,确保开发、测试和生产环境的一致性

  • Docker 用于将应用程序及其依赖打包成一个轻量化的容器,实现跨环境的一致性和快速部署

  • 通过 Docker,开发者可以在隔离的环境中运行应用,确保开发、测试和生产环境的无缝迁移。

开启 WSL 环境

很不幸,Docker 原生支持的环境为 linux 和 mac OS,无法直接在 windows 系统中运行,我们需要开启 windows 自带的 linux 子系统

在 win10 环境中,只需要开启 hyperV,即可正常使用 Docker 的客户端(在系统设置中搜索即可)

而在 win11 中,我们需要开启 WSL 服务(WSL2 具有更好的新性能与兼容性,win10 用户在版本允许的情况下也推荐使用 WSL)

首先,打开 windows 设置中以下两项服务

  • 适用于 Linux 的 Windows 子系统
  • 虚拟机平台

image-20250203183155290

然后,重启电脑,以管理员打开 CMD 或者 PowerShell,输入以下命令将 WSL 的默认版本切换至 WSL2

wsl --set-default-version 2

然后,输入以下命令下载 WSL

wsl --update --web-download

祈祷成功即可

理论上以上操作之后即可正常下载 Docker 客户端,但是你也可以在 WSL 中下载 Ubantu 或者 Arch 这种 linux 发行版当成虚拟机折腾一下

下载 Docker 客户端

推荐直接使用神秘力量进入 Docker 官网下载 docker_desktop_installer_windows_x86_64.exe,当然如果没有什么力量也可以在国内下载到各种镜像下载器

注意通过安装包引导安装是不能指定安装位置的,这里建议在命令行中通过以下命令指定安装路径

start /w "" "Docker Desktop Installer.exe" install --installation-dir=D:\Docker

打开 Docker Desktop 的客户端,成功运行即可

输入docker version,得到以下结果即安装成功

image-20250203190448517

这里的客户端提供的云服务与图形化界面,由于十分便于理解这里不做介绍,以下操作仍使用命令行

使用 Docker 运行 Redis 服务

Redis 是一种基于内存的高性能键值存储系统,广泛用作缓存、消息队列和会话存储,以提升应用性能

由于不明原因,其最新版本只能运行于 mac OS 和 linux 上,windows 只存在一个非常古老的版本,这里我们使用 Docker 运行 Redis 服务

在具体项目中要配置的环境不止一种,建议使用 docker-compose 的方式编写配置文件,这里以 MySQL 和 Redis 为例

在配置根目录下新建文件 docker-compose.yml,写入如下内容

version: '3.8'

services:
  mysql:  # MySQL 服务定义
    image: mysql:8.0  # 使用官方 MySQL 8.0 镜像
    environment:
      MYSQL_ROOT_PASSWORD: root   # 设置 root 用户密码
      MYSQL_DATABASE: marketplace # 自动创建数据库
    ports:
      - "3307:3306"  # 将容器内的3306端口映射到宿主机的3307
    healthcheck:  # 健康检查(可选)
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 5s
      timeout: 10s
      retries: 5

  redis:  # Redis 服务定义
    image: redis:alpine  # 使用轻量级 Redis 镜像
    ports:
      - "6379:6379"  # 端口映射
    command: redis-server --save 60 1 --loglevel warning  # 每60秒保存一次

其中两项服务为了便于开发测试,均未设置持久卷

以上文件其实包含了两个容器的配置,一旦启动该 docker 服务,对应得镜像便会依照配置运行在容器内部,我们可以通过其映射的宿主机端口访问服务

  • 在根目录下使用docker-compose up -d运行容器,-d参数使其在后台运行
  • 使用docker-compose down -v删除容器,-v同时删除其临时卷