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

相关推荐
二闹2 分钟前
什么?你的 SQL 索引可能白加了!?
后端·mysql·性能优化
lichenyang4533 分钟前
基于Express+Ejs实现带登录认证的多模块增删改查后台管理系统
后端
尝尝你的优乐美14 分钟前
前端查缺补漏系列(二)JS数组及其扩展
前端·javascript·面试
精品源码屋22 分钟前
基于JAVA17的仿向日葵远程控制软件源码+最新自研完整版
后端
叉烧钵钵鸡26 分钟前
Java ++i 与 i++ 底层原理
java·开发语言·后端
JuiceFS36 分钟前
JuiceFS on Windows: 首个 Beta 版的探索与优化之路
后端·云原生·云计算
JavaGuide39 分钟前
美团OC了,给的挺多!很满意!!
后端·面试
Albert_Lsk1 小时前
【2025/08/03】GitHub 今日热门项目
人工智能·开源·github·开源协议
excel1 小时前
Nuxt 3 + PWA 通知完整实现指南(Web Push)
前端·后端
用户4099322502121 小时前
BackgroundTasks 如何巧妙驾驭多任务并发?
后端·github·trae