当前位置: 首页 > news >正文

Docker 入门:如何使用 Docker 容器化 AI 项目(一)

在这里插入图片描述

引言

在人工智能(AI)项目的开发和部署过程中,环境配置和依赖管理往往是开发者遇到的挑战之一。开发者通常需要在不同的机器上运行同样的代码,确保每个人使用的环境一致,才能避免 “在我的机器上可以运行”的尴尬问题。而 Docker 作为一种轻量级的虚拟化技术,提供了一种理想的解决方案:通过容器化技术,可以确保 AI 项目在各种环境中一致性地运行,从而大大简化部署流程。

本篇文章将详细介绍如何使用 Docker 容器化 AI 项目,帮助你掌握 Docker 在 AI 开发中的应用,提升项目的可移植性和可扩展性。文章将从基础概念入手,逐步讲解 Docker 容器的创建、管理、部署等关键技能,并通过实际的示例代码来帮助你理解 Docker 容器在 AI 项目中的实际应用。

一、什么是 Docker?

Docker 是一个开源平台,用于开发、传输和运行应用程序。Docker 使得开发者能够将应用程序及其依赖打包成一个标准化的容器,并且容器能够在任何支持 Docker 的环境中运行。这种容器化的方式能够避免环境差异带来的问题,是开发、测试和生产环境的一种理想解决方案。

与传统的虚拟化技术不同,Docker 不需要为每个应用程序创建一个完整的虚拟机,而是通过共享操作系统内核,轻量化地创建多个相互隔离的容器。每个容器中包含运行应用所需的所有依赖,保证了应用在不同环境中的一致性。

Docker 的优势:

  • 轻量级: Docker 容器共享主机操作系统内核,无需像虚拟机那样模拟整个操作系统,因此更加轻量,占用资源更少。
  • 快速启动: 容器可以在几秒钟内启动,而虚拟机通常需要几分钟。
  • 资源利用率高: 由于轻量级和快速启动的特性,Docker 可以在同一台主机上运行更多应用,提高资源利用率。
  • 可移植性: Docker 容器可以在任何支持 Docker 的平台上运行,无需修改,实现了“一次构建,到处运行”的目标。
  • 版本控制: Docker 镜像支持版本控制,可以轻松回滚到之前的版本。
  • 生态系统: Docker 拥有庞大的生态系统,Docker Hub 上有大量的官方和社区维护的镜像,可以方便地获取和使用。

Docker 架构简介:
在这里插入图片描述

  • Docker 引擎 (Docker Engine): Docker 的核心组件,负责构建和运行 Docker 容器。
  • Docker 客户端 (Docker Client): 用户与 Docker 引擎交互的命令行工具。
  • Docker 镜像 (Docker Image): 只读模板,用于创建 Docker 容器。包含应用程序及其依赖。
  • Docker 容器 (Docker Container): Docker 镜像的运行实例。
  • Docker 仓库 (Docker Registry): 存储和分发 Docker 镜像的地方,例如 Docker Hub。
  • Docker Compose: 用于定义和运行多容器 Docker 应用的工具。

Docker vs 虚拟机:
在这里插入图片描述

特性Docker 容器虚拟机
启动速度秒级分钟级
资源占用更少更多
性能接近原生有一定损耗
隔离性进程级隔离硬件级隔离
操作系统共享宿主机内核需要完整的操作系统
大小通常较小 (MB)通常较大 (GB)
可移植性跨平台,只需支持 Docker需要兼容不同虚拟化平台

二、Docker 的安装与基本操作

2.1 安装 Docker

在开始使用 Docker 之前,首先需要在本地安装 Docker。不同操作系统的安装方式有所不同,以下是针对常见操作系统的安装步骤:

2.1.1 Windows 安装

在这里插入图片描述

  • 访问 Docker 官网 下载适用于 Windows 的 Docker Desktop。
  • 双击安装文件并按照安装向导完成安装。
  • 重要: Docker Desktop for Windows 可以选择使用 WSL 2 (Windows Subsystem for Linux 2) 或 Hyper-V 作为后端。WSL 2 性能更好,建议选择使用 WSL 2。安装过程中可能需要启用 WSL 2 和 Hyper-V 功能。
  • 安装完成后,启动 Docker Desktop,并进行初始设置。
  • 验证 Docker 是否安装成功,在终端中运行以下命令:
docker --version

如果返回版本信息,则说明安装成功。

2.1.2 macOS 安装
  • 访问 Docker 官网 下载适用于 macOS 的 Docker Desktop。
  • 双击下载的 .dmg 文件并将 Docker 拖入应用程序文件夹。
  • 启动 Docker,按照提示完成设置。
  • 在终端中运行以下命令,验证安装是否成功:
docker --version
2.1.3 Linux 安装

在 Linux 上,Docker 安装通常需要使用命令行工具。

以下是在 Ubuntu的安装步骤:

设置Docker的apt存储库。

添加Docker的官方GPG密钥:

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

将存储库添加到Apt源:

echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

安装最新特定版本Docker包。

$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

通过运行hello-world映像来验证安装是否成功:

$ sudo docker run hello-world

该命令下载一个测试映像并在容器中运行它。当容器运行时,它打印一条确认消息并退出。

centos版本的linux参照

2.2 Docker 常用命令

以下是一些常见的 Docker 命令,它们帮助我们在使用 Docker 时进行容器的管理:

  • 查看 Docker 版本
sudo docker --version
  • 拉取镜像
sudo docker pull <image_name>:<tag>

例如: docker pull tensorflow/tensorflow:2.6.0-py3

  • 查看本地镜像
sudo docker images
  • 启动容器
sudo docker run -it <image_name>:<tag> bash
  • 列出所有容器
sudo docker ps -a
  • 停止容器
sudo docker stop <container_id>
  • 删除容器
sudo docker rm <container_id>
  • 删除镜像
sudo docker rmi <image_name>:<tag>

三、理解 Dockerfile:构建 AI 项目的基础镜像

在这里插入图片描述

为了将 AI 项目容器化,我们需要构建一个 Docker 镜像。Docker 镜像是一个包含应用程序及其所有依赖的只读模板,容器则是镜像的一个运行实例。构建 Docker 镜像的核心是 Dockerfile,它是一种包含一系列指令的文本文件,用于自动化镜像的创建过程。

3.1 创建 Dockerfile

一个简单的 Dockerfile 用于构建一个包含 Python 和 AI 项目依赖的镜像,示例如下:

# 使用官方 Python 镜像作为基础镜像
FROM python:3.8-slim# 设置工作目录
WORKDIR /app# 复制项目文件到容器中
COPY . /app# 安装项目依赖
RUN pip install --no-cache-dir -r requirements.txt# 设置容器启动命令
CMD ["python", "main.py"]
3.1.1 说明
  • FROM:指定基础镜像,本例中使用的是 Python 3.8 版本的官方镜像。选择 slim 版本可以减小镜像体积。
  • WORKDIR:设置工作目录,所有后续的命令都会在这个目录中执行。
  • COPY:将当前目录的所有文件复制到容器中的 /app 目录。
  • RUN:在容器中执行命令,这里用于安装项目的 Python 依赖。--no-cache-dir 选项可以减小镜像大小。
  • CMD:指定容器启动时执行的命令。

3.2 构建镜像

创建好 Dockerfile 后,可以通过以下命令构建镜像:

docker build -t my-ai-project .

这会根据 Dockerfile 中的指令构建一个名为 my-ai-project 的镜像。-t 选项用于指定镜像的名称和标签(默认为 latest)。. 表示 Dockerfile 所在的当前目录。构建过程可能需要一些时间,取决于项目的大小和依赖的安装情况。

3.3 运行容器

构建完成后,可以通过以下命令运行容器:

docker run -it my-ai-project

这将启动一个基于 my-ai-project 镜像的容器,并进入交互模式。你可以在容器内运行 AI 项目的代码,或者启动相关服务。

想要系统学习AI 项目实战?那么”AI 项目实战:从原理到落地”这个专栏将带你具体的深入研究AI 项目。每个项目包含: 问题定义与数据集介绍、 数据预处理与特征工程、 模型选择与设计 、模型训练与调优、 模型评估与结果分析、 模型部署与上线 (Web API, 移动端部署等)!

点击进入:AI 项目实战:从原理到落地
点击进入:Docker 入门:如何使用 Docker 容器化 AI 项目(二)

本文为原创内容,未经许可不得转载。

http://www.lryc.cn/news/507808.html

相关文章:

  • LLMs之rStar:《Mutual Reasoning Makes Smaller LLMs Stronger Problem-Solvers》翻译与解读
  • 【RK3588 Linux 5.x 内核编程】-内核中断与ThreadedIRQ
  • Message Processing With Spring Integration高级应用:自定义消息通道与端点
  • S32K324 MCAL中的Postbuild和PreCompile使用
  • kubeadm_k8s_v1.31高可用部署教程
  • 【AI日记】24.12.22 容忍与自由 | 环境因素和个人因素
  • 【Java基础面试题030】Java和Go的区别?
  • 学习嵩山版《Java 开发手册》:编程规约 - 常量定义(P5)
  • 洛谷 P1595 信封问题 C语言递归
  • QT创建一个模板槽和信号刷新UI
  • 【计算机视觉基础CV-图像分类】01- 从历史源头到深度时代:一文读懂计算机视觉的进化脉络、核心任务与产业蓝图
  • C# cad启动自动加载启动插件、类库编译 多个dll合并为一个
  • Mybatis增删改查(配置文件版)
  • 【Spring Security系列】5 次密码错误触发账号锁定?Spring Security 高效实现方案详解
  • 笔记day5
  • Linux快速入门-兼期末快速复习使用
  • 浅谈文生图Stable Diffusion(SD)相关模型基础
  • Vivado使用VScode编译器
  • CEF127 编译指南 MacOS 篇 - 拉取 CEF 源码(五)
  • Jenkins 中 写 shell 命令执行失败,检测失败问题
  • Java程序打包成exe,无Java环境也能运行
  • 【java 正则表达式 笔记】
  • 基于PWLCM混沌映射的麋鹿群优化算法(Elk herd optimizer,EHO)的多无人机协同路径规划,MATLAB代码
  • Vue2五、自定义指令,全局局部注册、指令的值 ,插槽--默认插槽,具名插槽 ( 作用域插槽)
  • Pika Labs技术浅析(五):商业智能技术
  • YOLO-World:Real-Time Open-Vocabulary Object Detection
  • Fastjson <= 1.2.47 反序列化漏洞复现
  • 鸿蒙项目云捐助第二十一讲云捐助项目物联网IoT模拟器的使用
  • 大数据技术原理与应用期末复习-知识点(二)
  • 高效准确的PDF解析工具,赋能企业非结构化数据治理