前言在云原生时代Docker 已经成了开发者不可或缺的工具。今天带大家从底层环境搭建开始一步步玩转 Docker 容器化技术。一、 环境搭建告别官方脚本连接重置在 Ubuntu 22.04 上安装 Docker 时由于网络环境问题官方的get.docker.com脚本经常报SSL_connect: 连接被对方重置。解决方案建议直接使用阿里云镜像源进行手动安装不仅稳定而且速度极快。# 添加阿里云 GPG 密钥并设置稳定版仓库curl-fsSLhttps://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg|sudogpg--dearmor-o/usr/share/keyrings/docker-archive-keyring.gpgechodeb [arch$(dpkg --print-architecture)signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu$(lsb_release-cs)stable|sudotee/etc/apt/sources.list.d/docker.list/dev/null二、 基础任务从 Hello World 到 Nginx1. 验证安装成功安装后运行经典的hello-world看到Hello from Docker!标志着我们的容器引擎已经成功跑了起来。2. 运行 Nginx Web 服务容器的魅力在于“开箱即用”。通过简单的端口映射我们就能启动一个 Nginx 服务。dockerrun-d-p8080:80--namemy-nginx nginx:1.25通过curl访问宿主机的 8080 端口看到HTTP/1.1 200 OK说明流量已成功转发至容器内部。三、 进阶实战构建自定义 Python Flask 镜像这一步我们要亲手编写Dockerfile将一个 Python 应用打包成镜像。1. 编写 app.py我们编写了一个简单的 Flask 应用它能返回容器的主机名和环境变量中的学号信息。2. Dockerfile 解析FROM python:3.11-slim WORKDIR /app COPY app.py . RUN pip install --no-cache-dir flask EXPOSE 5000 CMD [python, app.py]3. 构建与运行dockerbuild-tlab1-flask:v1.dockerrun-d-p5000:5000-eSTUDENT********--nameflask-app lab1-flask:v1四、 深度观察镜像分层与容器隔离1. 镜像层 (Layers)执行docker history lab1-flask:v1你会发现 Dockerfile 里的每一行指令都对应一个镜像层。这种分层结构让镜像的分发极其高效相同的基础层可以被多个镜像共享。2. 容器隔离的本质通过实验我们观察到了有趣的现象PID 隔离在宿主机看到的进程 PID 为12420但在容器内它认为自己是PID 1。这就是Namespace的魔力。文件系统隔离容器内运行的是精简的 Debian而宿主机是 Ubuntu。五、 结语Docker 并不只是简单的“虚拟机替代品”它是通过 Linux 内核的Namespace实现资源隔离通过Cgroup实现资源限制的轻量级虚拟化技术。下一篇预告我们将探索如何将容器部署到Kubernetes (minikube)集群中开启编排之旅