安装

Linux (以Ubuntu为例)

sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
sudo apt install docker-ce docker-ce-cli containerd.io -y

Windows

Docker在windows上使用需要使用wsl2功能,即windows的linux子系统。

开启wsl并安装ubuntu子系统

以管理员身份启动powershell后运行

wsl --install
wsl --install -d Ubuntu

查看版本是否正确:

wsl --list --verbose

输出:

NAME      STATE    VERSION
* Ubuntu   Running 2

如果VERSION是1

官方文档参考

启用子系统

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

检查运行 WSL 2 的要求

  • 对于 x64 系统:版本 1903 或更高版本,内部版本为 18362.1049 或更高版本。
  • 对于 ARM64 系统:版本 2004 或更高版本,内部版本为 19041 或更高版本。

启用虚拟机功能

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

下载 Linux 内核更新包

Linux 内核更新包安装最新版本的 WSL 2 Linux 内核

更新安装

wsl --set-default-version 2
wsl --set-version Ubuntu 2

检查Hyper-V是否开启

win+s搜索启用或关闭windows功能

image.png

启用Hyper-V,Docker服务就能正常运行了。

Docker的基本使用

镜像(Image)

镜像是一个只读模板,包含运行应用所需的所有内容:代码、运行时、库、环境变量和配置文件。

  • 可以将其理解为应用的“快照”。
  • 通常由 Dockerfile 构建。
  • 示例:nginx:latestpython:3.11

容器(Container)

容器是镜像的运行实例。你可以在容器中运行、停止、修改和销毁应用。

  • 容器是隔离的、轻量的运行环境。
  • 可以多个容器基于同一个镜像运行,互不影响。

Dockerfile

一个文本文件,定义了如何构建一个镜像的所有步骤。

  • 通过指令如 FROMRUNCOPYCMD 等构建。
  • 示例:
FROM python:3.11
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "main.py"]

Docker Compose

一个用于定义和管理多容器应用的工具,使用 docker-compose.yml 文件来配置应用的服务、网络、卷等。

  • 适合部署一组相关的容器(如:Web 应用 + 数据库)。
  • 启动命令简单:docker compose up -d

卷(Volumes)

卷是 Docker 用于持久化和共享数据的一种方式,独立于容器的生命周期。

  • 即使容器删除,卷中数据依然保留。
  • 常用于挂载数据库数据、配置文件等。

网络(Networks)

Docker 使用网络将不同容器连接起来通信。常用类型包括:

  • bridge:默认网络,容器间可以互相通信。
  • host:使用主机网络,性能高但不隔离。
  • none:无网络隔离,仅用于特殊用途。

常用 Docker 命令

命令 说明
docker ps 查看正在运行的容器
docker ps -a 查看所有容器(包括停止的)
docker images 查看已下载的镜像
docker pull <镜像名> 拉取镜像
docker run <选项> <镜像> 运行一个容器
docker stop <容器ID> 停止容器
docker rm <容器ID> 删除容器
docker rmi <镜像ID> 删除镜像
docker logs <容器ID> 查看容器日志
docker exec -it <容器ID> /bin/bash 进入容器内部交互式终端
docker compose up -d 后台启动 docker compose 定义的服务
docker compose down 停止并移除所有服务容器

打包当前 Python 项目环境为例

假设目录结构如下:

my_project/
├── app.py
├── requirements.txt
└── Dockerfile
  • app.py 是你的 Python 主程序。
  • requirements.txt 是通过 pip freeze > requirements.txt 导出的依赖列表。

创建 DockerFile

在项目根目录下新建 Dockerfile

# 使用官方 Python 基础镜像
FROM python:3.11-slim

# 设置工作目录
WORKDIR /app

# 复制当前目录的所有文件到容器内
COPY . .

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 设置默认运行命令
CMD ["python", "app.py"]
# 构建镜像
docker build -t my-python-app .
# 运行容器
docker run --rm my-python-app 

安装dify服务为例

克隆 Dify 代码仓库

克隆 Dify 源代码至本地环境。

git clone <https://github.com/langgenius/dify.git> --branch 0.15.3

启动 Dify

  1. 进入 Dify 源代码的 Docker 目录

    cd dify/docker
  2. 复制环境配置文件

    cp .env.example .env
  3. 启动 Docker 容器

    docker compose up -d

更新 Dify

进入 dify 源代码的 docker 目录,按顺序执行以下命令:

Copy

cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d

自定义配置

编辑 .env 文件中的环境变量值。然后重新启动 Dify:

docker compose down
docker compose up -d