Docker快速入门:30分钟掌握容器化部署
1. Docker 快速入门实操指南作为一名在容器化领域摸爬滚打多年的老手我经常被问到如何快速上手Docker。今天就用最直白的方式带你在30分钟内完成从安装到运行第一个容器的完整流程。不同于官方文档的学院派风格这里只讲真正需要掌握的实战要点。Docker本质上是一个轻量级虚拟机但它比传统VM快得多也小得多。想象你搬家时用集装箱运输物品——Docker容器就是软件世界的标准化集装箱。它能将应用及其依赖环境打包成独立单元实现一次构建到处运行的效果。下面我会用做菜来类比Docker的核心组件镜像(Image) 菜谱容器(Container) 按菜谱做出来的菜仓库(Registry) 共享菜谱的云盘重要提示所有命令在Linux/macOS的终端或Windows的PowerShell中执行遇到权限问题在命令前加sudo1.1 环境准备与安装Windows/macOS用户 直接下载 Docker Desktop 安装后会在任务栏看到鲸鱼图标。首次启动需要等待Starting Docker Engine...初始化完成。Linux用户以Ubuntu为例# 卸载旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc # 安装依赖 sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release # 添加官方GPG密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 设置稳定版仓库 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装Docker引擎 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin # 验证安装 sudo docker run hello-world安装完成后建议执行以下配置# 将当前用户加入docker组避免每次sudo sudo usermod -aG docker $USER newgrp docker # 立即生效 # 配置国内镜像加速解决拉取镜像慢的问题 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [ https://hub-mirror.c.163.com, https://mirror.baidubce.com ] } EOF sudo systemctl daemon-reload sudo systemctl restart docker2. 核心概念速成课2.1 镜像(Image)操作三板斧搜索镜像就像在应用商店找APPdocker search nginx拉取镜像下载软件安装包docker pull nginx:latest # 明确指定标签 docker pull nginx # 默认latest标签管理本地镜像docker images # 查看已下载镜像 docker rmi nginx # 删除镜像 docker image prune # 清理悬空镜像2.2 容器(Container)生命周期管理启动容器的经典姿势docker run -d -p 8080:80 --name my_nginx nginx参数解读-d后台运行detach模式-p 主机端口:容器端口端口映射--name给容器起个名字否则系统随机分配查看容器状态docker ps # 查看运行中的容器 docker ps -a # 查看所有容器包括已停止的 docker stats # 实时资源监控与容器交互docker exec -it my_nginx bash # 进入容器内部 docker logs -f my_nginx # 查看实时日志停止/删除容器docker stop my_nginx # 优雅停止 docker rm my_nginx # 删除容器 docker container prune # 清理停止的容器3. 实战部署Python Web应用我们通过一个Flask应用的容器化案例演示完整工作流3.1 准备应用代码创建项目目录并新建app.pyfrom flask import Flask app Flask(__name__) app.route(/) def hello(): return Hello Docker! if __name__ __main__: app.run(host0.0.0.0, port5000)3.2 编写Dockerfile# 使用官方Python轻量级镜像作为基础 FROM python:3.9-slim # 设置工作目录 WORKDIR /app # 复制依赖文件 COPY requirements.txt . # 安装依赖 RUN pip install --no-cache-dir -r requirements.txt # 复制应用代码 COPY . . # 暴露端口 EXPOSE 5000 # 启动命令 CMD [python, app.py]创建requirements.txtflask2.0.13.3 构建与运行# 构建镜像注意最后的点表示当前目录 docker build -t my_flask_app . # 运行容器 docker run -d -p 5000:5000 my_flask_app # 访问测试 curl http://localhost:50004. 数据持久化与网络配置4.1 数据卷(Volume)管理容器本身是临时的重要数据需要持久化# 创建命名卷 docker volume create my_data # 使用数据卷 docker run -d -v my_data:/data nginx # 查看卷信息 docker volume inspect my_data4.2 容器网络互联Docker提供多种网络模式# 创建自定义网络 docker network create my_network # 将容器接入同一网络 docker run -d --netmy_network --name web nginx docker run -it --netmy_network alpine ping web5. 常见问题排雷指南镜像拉取慢配置国内镜像源前文已介绍或者直接指定国内仓库docker pull registry.cn-hangzhou.aliyuncs.com/library/nginx端口冲突# 查看端口占用 netstat -tulnp | grep 8080 # 或者改用其他端口 docker run -d -p 8081:80 nginx容器启动后立即退出检查CMD命令是否正确添加交互模式调试docker run -it --entrypoint/bin/sh my_image磁盘空间不足# 查看磁盘占用 docker system df # 深度清理 docker system prune --all --volumes6. 进阶路线建议掌握基础操作后可以继续探索Docker Compose多容器编排Dockerfile优化多阶段构建容器安全扫描trivy工具生产环境部署日志、监控方案我个人的经验是先熟练单容器操作再学编排工具。遇到问题多查docker --help官方文档其实写得很详细。记住每个容器最好只跑一个进程这是微服务架构的核心哲学。