Docker 入门教程

主要结论:Docker 是一种轻量级的容器化技术,可让开发者在任何环境中快速部署、隔离和管理应用。本教程将通过实际示例,带你一步步理解 Docker 的核心概念与常用操作,帮助你在本地环境中动手构建、运行和发布容器化应用。

一、为什么要使用 Docker?

在传统开发模式中,环境差异往往导致"在我机器上能跑"却无法在服务器上正常运行的问题。Docker 将应用及其依赖打包到一个标准化的容器中,解决了"环境不一致"难题,并带来以下好处:

  • 轻量与高效:容器共享主机内核,启动速度快,资源开销小。
  • 可移植性:同一个镜像可在开发、测试、生产环境无差异运行。
  • 隔离性:每个容器相互独立,避免依赖冲突。
  • 易维护:通过 Dockerfile 定义镜像,便于版本管理和自动化构建。

二、核心概念

  1. 镜像(Image)
    镜像是一种只读模板,包含应用运行所需的文件系统和配置。可以从公共仓库(Docker Hub)拉取,也可以自定义构建。
  2. 容器(Container)
    容器是镜像的可运行实例,拥有独立的进程空间和网络接口,启动即运行,停止即销毁。
  3. Dockerfile
    用于定义如何构建自定义镜像的脚本文件。通过一系列指令(如 FROM、COPY、RUN)描述镜像构建过程。
  4. 仓库(Registry)
    镜像存储和分发的服务。Docker Hub 是官方公共仓库,也可搭建私有仓库。

三、环境准备

  1. 安装 Docker Desktop(Windows/macOS)或 Docker Engine(Linux)。
  2. 完成安装后,运行 docker --version,确认输出类似 Docker version 20.10.x 即可。

四、第一个 Docker 镜像与容器

1. 拉取官方镜像

复制代码
bash
docker pull hello-world

Docker 会从 Docker Hub 下载 hello-world 镜像。

2. 运行容器

arduino 复制代码
bash
docker run hello-world

输出"Hello from Docker!"即代表容器启动成功。

五、自定义镜像:构建一个简单的 Nginx 站点

1. 创建项目目录

perl 复制代码
bash
mkdir my-nginx
cd my-nginx

index.html 中添加:

xml 复制代码
xml
<!DOCTYPE html>
<html>
<head><title>My Nginx</title></head>
<body><h1>欢迎使用 Docker Nginx!</h1></body>
</html>

2. 编写 Dockerfile

my-nginx 目录下创建 Dockerfile,内容如下:

bash 复制代码
text
# 选择基础镜像
FROM nginx:latest

# 将本地 index.html 复制到容器网页目录
COPY index.html /usr/share/nginx/html/index.html

3. 构建镜像

perl 复制代码
bash
docker build -t my-nginx:1.0 .
  • -t my-nginx:1.0:为镜像打标签。

4. 运行容器

arduino 复制代码
bash
docker run -d -p 8080:80 --name test-nginx my-nginx:1.0
  • -d:后台运行
  • -p 8080:80:将主机 8080 端口映射到容器 80 端口
  • --name test-nginx:容器名称

浏览器访问 http://localhost:8080,即可看到自定义页面。

六、常用命令速览

操作 命令示例 说明
查看镜像 docker images 列出本地镜像
查看容器 docker ps(运行中) docker ps -a(所有) 列出容器
停止容器 docker stop <容器ID或名称> 停止运行中的容器
删除容器 docker rm <容器ID或名称> 删除已停止容器
删除镜像 docker rmi <镜像ID或名称> 删除本地镜像
查看日志 docker logs <容器ID或名称> 查看容器输出日志
进入容器 docker exec -it <容器ID> /bin/bash 以交互模式进入容器终端

七、进阶技巧

  • 镜像层缓存:Docker 会缓存每一步,如果 Dockerfile 修改后重建,仅重做变动层,提升效率。
  • 多阶段构建:在构建复杂应用时,使用多阶段构建减小最终镜像体积。
  • Compose 编排 :使用 docker-compose.yml 同时管理多个服务,实现"一键启动"应用栈。

八、总结与下一步

通过以上步骤,你已经掌握了 Docker 的基本概念和操作流程。接下来可以尝试:

  • 学习 Docker Compose 以编排多服务应用。
  • 了解 Docker 网络模型,配置自定义网络。
  • 探索 Kubernetes,实现容器编排与自动化运维。

Docker 是现代云原生开发的基石,深入学习后将极大提高开发、测试和部署效率。愿你在容器化道路上越走越远!

相关推荐
系'辞24 分钟前
【obsidian指南】配置obsidian git插件,实现obsidian数据定时同步到github仓库(Mac电脑)
macos·github·agent·知识库
一 乐5 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
码事漫谈7 小时前
Protocol Buffers 编码原理深度解析
后端
码事漫谈7 小时前
gRPC源码剖析:高性能RPC的实现原理与工程实践
后端
踏浪无痕8 小时前
AI 时代架构师如何有效成长?
人工智能·后端·架构
程序员小假8 小时前
我们来说一下无锁队列 Disruptor 的原理
java·后端
草梅友仁9 小时前
墨梅博客 1.0.0 发布与更新 | 2026 年第 2 周草梅周报
github·ai编程·nuxt.js
辞砚技术录9 小时前
MySQL面试题——联合索引
数据库·面试
小L~~~9 小时前
绿盟校招C++研发工程师一面复盘
c++·面试
武子康10 小时前
大数据-209 深度理解逻辑回归(Logistic Regression)与梯度下降优化算法
大数据·后端·机器学习