/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}
摘要:Docker 是现在后端开发、服务器部署、微服务、自动化运维的必备技能。传统部署环境杂乱、版本冲突、打包麻烦,而 Docker 一次打包、处处运行。本文从零通俗讲解 Docker 原理、虚拟机与容器区别、核心架构、镜像/容器/仓库概念、高频命令、实战部署,新手看完即可独立完成项目容器化部署。
关键词:Docker入门;容器化部署;Docker命令;微服务部署;环境一致性
一、为什么要学 Docker?(解决什么问题)
新手开发、部署项目最头疼的问题:本地能跑,服务器跑不起来。
原因基本都是:环境版本不一致、依赖缺失、系统配置不同、库版本冲突。
Docker 的终极作用:环境统一、一次打包、到处运行。
不管是 Windows、Mac、Linux,只要安装了 Docker,容器内的运行环境完全一致,彻底解决「环境问题」。
企业现在所有微服务、云服务器、自动化部署、CI/CD、集群部署,全部基于 Docker。
二、Docker 是什么?
Docker 是一款开源的容器化部署工具,可以将代码、依赖、运行环境、配置统一打包为一个容器,实现标准化部署。
2.1 核心优势
-
环境一致:本地、测试、生产环境完全统一
-
部署极速:启动服务秒级完成,告别繁琐安装配置
3.2 Docker 容器
共用宿主机内核,只打包应用和依赖,无完整系统,轻量、秒启、资源极小。
结构:物理机系统 → Docker引擎 → 多个隔离容器(应用+依赖)
3.3 核心对比
|
系统级别 |
完整独立操作系统 |
共享宿主机内核,无完整系统 |
|
启动速度 |
分钟级 |
秒级 |
|
资源占用 |
极高 |
极低 |
|
隔离性 |
完全隔离 |
进程级别隔离 |
|
部署场景 |
系统级虚拟化 |
应用级部署、微服务 |
四、Docker 三大核心概念(重中之重)
学会这三个概念,Docker 就学懂了 80%。
4.1 镜像(Image)
镜像就是只读模板,相当于安装包、系统快照。
包含:运行环境、依赖、程序、配置,不可修改。
例如:mysql镜像、redis镜像、nginx镜像、java镜像。
4.2 容器(Container)
镜像运行起来就是容器,是真实运行的服务实例。
容器是可读写、可运行、可停止、可删除的服务进程。
镜像静态、容器动态。
4.3 仓库(Repository)
存放镜像的云端仓库,默认官方仓库:Docker Hub。
需要什么环境直接拉取镜像,无需手动安装配置。
五、Docker 整体工作架构
C/S 架构:客户端 + 服务端
-
Docker Client:我们输入命令的终端
-
Docker Daemon:后台守护进程,负责管理镜像、容器、网络、存储
-
Registry:镜像仓库
流程:客户端输入命令 → 守护进程执行 → 拉取镜像/创建容器/启动服务
六、Docker 高频核心命令(日常全覆盖)
所有命令熟记即可满足 100% 日常开发部署需求。
6.1 基础信息命令
# 查看Docker版本
docker version
# 查看Docker信息
docker info
# 检测docker是否启动
docker
6.2 镜像操作命令
# 查看本地所有镜像
docker images
# 搜索镜像
docker search mysql
# 拉取镜像(默认最新版latest)
docker pull mysql
# 拉取指定版本
docker pull mysql:5.7
# 删除镜像
docker rmi 镜像ID

6.3 容器操作命令(最常用)
# 查看正在运行的容器
docker ps
# 查看所有容器(包含已停止)
docker ps -a
# 启动容器(示例nginx)
docker run -d –name nginx-test -p 8080:80 nginx
# 参数说明:
# -d 后台运行
# –name 给容器起名
# -p 宿主机端口:容器端口 端口映射
# 停止容器
docker stop 容器ID
# 启动已存在容器
docker start 容器ID
# 重启容器
docker restart 容器ID
# 删除容器(必须先停止)
docker rm 容器ID

6.4 容器进阶实操命令
# 进入容器内部
docker exec -it 容器ID /bin/bash
# 查看容器日志
docker logs 容器ID
# 实时查看日志
docker logs -f 容器ID
# 退出容器
exit
6.5 数据卷

6.6 仓库

# 构建镜像
# 基础镜像为python:3.10-slim
FROM python:3.10-slim
# 设置环境变量
ENV HOME=/app \\
PORT=5000
# 设置工作目录
WORKDIR $HOME
# 将requirements.txt复制到工作目录
COPY requirements.txt $HOME/requirements.txt
# 安装依赖
RUN pip install -r requirements.txt
# 复制当前目录下的所有文件到工作目录
COPY . /app
# 暴露端口
EXPOSE $PORT
# 运行
CMD ["python", "web.py"]
七、Docker 核心核心机制(新手必懂)
7.1 端口映射 -p
容器是隔离的,外部无法直接访问,需要通过 -p 宿主机端口:容器端口 映射。
访问宿主机端口 = 访问容器服务。
7.2 数据挂载 -v
容器删除后数据会丢失,通过 -v 挂载目录 将容器数据挂载到宿主机,实现数据持久化。
八、Dockerfile 简单入门(项目打包核心)
Dockerfile 是镜像构建脚本,用来自定义打包自己的项目镜像。
# 基础镜像
FROM java:8
# 拷贝jar包到容器
COPY demo.jar /app.jar
# 暴露端口
EXPOSE 8080
# 启动命令
ENTRYPOINT ["java","-jar","/app.jar"]
九、新手常见避坑指南
-
❌ 不要直接删除运行中的容器,先 stop 再 rm
-
❌ 不做数据挂载,容器重建数据全部丢失
-
❌ 端口被占用导致启动失败,更换宿主机端口
-
✅ 重要服务一定要配置 开机自启
-
✅ 尽量使用指定版本镜像,不要一律 latest
十、学习总结
本文带你零基础彻底入门 Docker,核心记住:
Docker 解决环境不一致问题,一次打包到处运行
镜像静态、容器动态,镜像是模板,容器是实例
核心操作:拉镜像、启容器、端口映射、日志查看、进入容器
企业必备:Docker 是微服务、云部署、自动化运维的基础
写在最后
现在的后端开发、运维、测试、云原生岗位,Docker 已是标配技能。学会 Docker 可以极大提升项目部署效率,告别传统繁琐的环境搭建与部署方式。
本文为零基础入门完整版,建议收藏!后续持续更新 Docker Compose、容器集群、微服务容器化实战教程。
点赞+收藏+关注,持续更新后端零基础全套教程!

