Skip to content

Docker从入门到实践:以DataLab环境配置为例

约 956 个字 14 行代码 3 张图片 预计阅读时间 5 分钟 共被读过

“明明在我的电脑上是可以运行的” 。
在部署OpenChain时,我曾深陷环境配置的泥潭。虽然VM可以解决环境隔离问题,但其高资源占用、冗余操作和缓慢启动等痛点促使我们寻找更优解——这正是Docker容器技术的用武之地。

另外摸索用 Docker 配置 Ubuntu 系统运行 DataLab 时,我发现网上教程少之又少。仅有的内容也满是晦涩术语与复杂步骤,对新手极不友好。所以这篇文章,以最细致、最易懂的方式,手把手带你上手 DataLab。

1. Docker介绍

1.1 容器化革命

Docker是一个开源的容器化平台,其通过操作系统级虚拟化技术,将应用程序及其依赖环境(包括代码、运行时、系统工具、系统库等)打包成标准化的、轻量级的容器(Container)。相较于传统虚拟机:

特性 Docker容器 虚拟机
虚拟化层级 OS级 硬件级
启动速度 秒级 分钟级
资源占用 MB级 GB级
性能损耗 <5% 15-20%
镜像大小 通常<100MB 通常>1GB

(数据来源:Docker官方基准测试报告)

1.2 核心概念解析

  • 镜像(Image):不可变的模板文件,包含构建容器的完整指令集
  • 容器(Container):镜像的可运行实例,具有独立文件系统和资源隔离
  • 仓库(Registry):用于存储和分发镜像的中央服务(如Docker Hub)
  • Volume:持久化数据存储方案,突破容器生命周期的限制

2. Docker安装

2.1 Windows 11专业版安装指南

  1. 访问Docker Desktop for Windows下载安装包
  2. 启用系统级支持:
    - 控制面板 → 程序 → 启用或关闭Windows功能
    - 勾选「Hyper-V」和「Windows Subsystem for Linux」
  3. 安装时选择WSL2后端:
    PowerShell
    # 验证WSL版本
    wsl --list --verbose
    # 设置默认版本
    wsl --set-default-version 2
    

    - 架构选择建议
    • WSL2:推荐开发使用,提供完整Linux内核,I/O性能提升4-5倍
    • Hyper-V:适合企业级应用,支持高级虚拟化功能(动态内存分配、故障转移集群等)

2.2 镜像加速配置

针对国内网络环境优化,建议配置USTC镜像源:
- 作用是增加稳定性,提高下载镜像的速度,优化构建功能
image.png
4. 打开Docker Desktop → Settings → Docker Engine
5. 替换daemon.json配置:

JSON
{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
  "features": {
    "buildkit": true  // 启用新一代构建工具
  },
  "experimental": false  // 生产环境禁用实验特性
}

6. 应用配置并重启服务:
Bash
systemctl restart docker  # Linux
Get-Service docker | Restart-Service  # PowerShell

3. 配置Docker镜像

  1. 拉取Ubuntu镜像
    • 可以直接在图形化界面搜索Ubuntu然后pull最新的版本
    • 也可以使用终端命令行的形式
      Bash
      docker pull ubuntu:lastest  # 推荐使用LTS版本
      
  2. 创建容器

    • 图形化界面
      image.png

    • Container name自拟

    • Port 端口设置
    • Volume卷挂载,作用是设置主机和容器之间的卷挂载,好处是主机和容器可以共享该目录下的文件,方便在主机上编辑代码并在容器内运行测试等操作
    • Environment variables环境变量设置,暂时不操作
    • 终端命令
      docker run -it -v <Host path>:<Container path> --name <Container name> ubuntu:latest

    4. 配置DataLab环境

    1. 先更新软件包列表apt-get update
    2. 安装wgetapt-get install -y wget
    3. 切换到共享文件夹cd CSapp
    4. 从官网下载源码安装包wget http://csapp.cs.cmu.edu/3e/datalab-handout.tar
    5. 将从官网下载的tar包解压,指令:tar xvf FileName.tar
    6. 进入datalab-handout文件夹
    7. 安装必备工具apt install -y build-essential
      - 这个软件包组包含了 GCC 编译器、G++ 编译器(用于 C++ 代码)、make 工具以及其他编译所需的基础库和头文件。

5. Finish!

  • 接下来就可以在本机编译器中编写bit.c,然后在docker中的ubuntu系统中编译和运行代码了

容器化不是银弹,但确实是现代软件工程的必备技能。当再次面对"Works on my machine"的困境时,我们终于可以自信地说:"It works on Docker!"

References