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

相关推荐
骂我的人都死了39 分钟前
DevOps架构部署
运维·ubuntu·docker·k8s·github·devops·python3.11
Alaaaaaaan1 小时前
[DevOps]使用github-action工具部署docker容器(实现提交代码一键推送部署到服务器)
服务器·前端·docker·容器·github
qq_256247051 小时前
Google 账号防封全攻略:从避坑、保号到申诉解封
后端
MX_93592 小时前
使用Spring的BeanFactoryPostProcessor扩展点完成自定义注解扫描
java·后端·spring
弹简特2 小时前
【JavaEE05-后端部分】使用idea社区版从零开始创建第一个 SpringBoot 程序
java·spring boot·后端
爬山算法2 小时前
Hibernate(81)如何在数据同步中使用Hibernate?
java·后端·hibernate
CryptoRzz2 小时前
德国股票数据 API 对接实战(DAX 指数与实时行情)
websocket·区块链·github·分布式账本
Tipriest_2 小时前
GitHub Gist 功能详解:从入门到进阶
github·gist
Ivanqhz2 小时前
现代异构高性能计算(HPC)集群节点架构
开发语言·人工智能·后端·算法·架构·云计算·边缘计算
Loo国昌2 小时前
【大模型应用开发】第三阶段:深度解析检索增强生成(RAG)原理
人工智能·后端·深度学习·自然语言处理·transformer