docker 是一款容器化平台,核心是把应用程序还有它依赖的环境打包成镜像,运行的时候生成独立隔离的容器,解决传统开发里面环境不一致,开发测试生产版本不一样,部署麻烦的问题,简单理解就是 docker 相当于一个标准化集装箱,应用连同代码 库 配置全部打包在一起,不管在 windows mac 还是 linux 服务器上运行,环境都是一致的,入门学习 docker,需要掌握镜像 容器 仓库三大核心概念,学会安装 docker,掌握基础命令,会编写 Dockerfile,会使用 docker-compose 编排多容器项目,不需要一开始就钻研复杂集群,先把单机基础操作练熟,就可以满足日常开发部署使用,本教程面向零基础,按照安装 概念 基础命令 镜像构建 实战案例顺序讲解,逻辑循序渐进。
核心基础概念
镜像 image 只读模板,里面包含应用程序和全部依赖,可以理解成软件安装包
容器 container 镜像运行起来之后的实例,可启动 停止 删除,容器之间互相隔离
仓库 registry 存放镜像的服务器,最常用公共仓库 docker hub,也可以搭建私有仓库
Dockerfile 文本脚本文件,用来定义镜像构建步骤,自动打包生成自定义镜像
docker-compose 编排工具,用来一次性管理多个关联容器,适合 web 加数据库这类多组件项目
宿主机 也就是运行 docker 本身的电脑或者服务器
支持系统与安装准备
| 系统 | 推荐版本 | 安装方式 |
|---|---|---|
| windows | win10 2004 以上 | docker desktop |
| macos | 新版 mac | docker desktop |
| linux | ubuntu centos 等 | yum apt 官方源安装 |
windows 和 mac 安装 docker desktop 之后,需要开启 wsl2 或者虚拟化功能,linux 系统不需要桌面,直接命令行安装,安装完成之后执行 docker version,能正常输出版本信息就代表安装成功。
入门基础命令清单
镜像相关命令
docker pull 拉取远程镜像
docker images 查看本地全部镜像
docker rmi 删除镜像
docker search 搜索 docker hub 上面的镜像
容器相关命令
docker run 创建并启动容器
docker ps 查看正在运行容器
docker ps -a 查看全部容器包含已停止
docker stop 停止容器
docker start 启动容器
docker rm 删除容器
docker exec 进入正在运行容器内部执行命令
docker logs 查看容器日志
第一个实战案例 运行 nginx
执行拉取镜像命令
docker pull nginx
启动 nginx 容器,端口映射,把宿主机 80 端口映射到容器 80 端口
docker run -d --name mynginx -p 80:80 nginx
参数解释
-d 后台运行
--name 给容器自定义名称
-p 端口映射
执行 docker ps 可以看到容器正在运行,浏览器访问本机 80 地址,就能打开 nginx 默认页面
后续停止容器 docker stop mynginx,删除容器 docker rm mynginx
Dockerfile 构建自定义镜像
Dockerfile 是构建镜像的脚本,基础关键字
FROM 指定基础镜像
WORKDIR 设置工作目录
COPY 把本地文件复制进镜像
RUN 构建镜像的时候执行命令
CMD 容器启动默认执行命令
简单示例 基于 ubuntu 部署应用
FROM ubuntu
WORKDIR /app
COPY . /app
RUN apt update
CMD ["bash"]
构建命令
docker build -t myapp:v1 .
后面点代表当前目录,-t 给镜像打标签名称版本
docker-compose 多容器编排
很多项目不是单个容器,比如 web 应用加 mysql 数据库,分开手动启动很麻烦,docker-compose 使用 yaml 配置文件,一次性定义多个容器 网络 端口 数据卷
核心命令
docker compose up 启动全部服务
docker compose down 停止并删除全部容器
docker compose ps 查看服务状态
docker compose logs 查看所有服务日志
数据卷与网络入门知识点
数据卷 volume 用来持久化容器数据,容器删除之后数据还保留,解决容器本身临时存储的问题,数据库容器一定要配置数据卷
网络 network docker 容器默认可以自定义网络,同网络下容器可以直接用容器名称互相访问,不需要写宿主机 ip
入门学习路线
第一步 安装 docker,熟悉基础命令,跑通 nginx hello world 这类简单镜像
第二步 理解镜像容器仓库三者关系,学会拉取 删除 启停容器
第三步 学习 Dockerfile,自己构建自定义镜像
第四步 学习 docker-compose,做多容器项目实战
第五步 后续进阶可以学习私有仓库 容器安全 镜像优化 k8s 相关内容
整体总结
docker 入门教程核心就是理解容器隔离打包的思想,不要一开始就接触复杂集群,先掌握镜像容器基础命令,完成 nginx 实战,学会 Dockerfile 和 compose,就完成入门阶段,docker 最大优势就是环境标准化,后续开发测试部署都可以复用镜像,大幅减少环境报错问题。
【常见问题】
问题 1 docker 入门教程里面 windows 安装 docker 为什么提示虚拟化未开启
回答 1 docker 入门教程里面 windows 安装报错虚拟化未开启,需要进入主板 bios 开启虚拟化,同时开启 wsl2 功能,这是 docker desktop 运行的必要前置条件。
问题 2 docker 入门教程学习的时候 docker run 启动容器之后立刻退出是什么原因
回答 1 docker 入门教程里面容器启动立刻退出,大多是容器前台进程结束,容器必须要有持续前台运行程序,后台守护模式如果没有常驻进程,容器就会自动退出。
问题 3 docker 入门教程里镜像和容器最核心区别是什么
回答 1 docker 入门教程里面,镜像是只读模板安装包,容器是镜像运行后的实例,一个镜像可以同时启动多个独立容器。
问题 4 docker 入门教程为什么推荐学习 docker-compose
回答 1 docker 入门教程推荐 docker-compose,是因为真实项目一般包含多个容器,手动逐个启动管理效率低,compose 可以统一编排启动停止多容器服务。
【免责申明】
本 docker 入门教程基于通用官方文档原理编写,不同 docker 版本命令和界面会有小幅变动,内容仅用于学习参考,生产环境部署请结合官方最新文档,重要业务上线前做好测试和数据备份。


