Docker 极简入门实战
一、Docker 核心概念
Docker 是一套容器化技术工具,核心目标是 “让应用在任何环境中都能一致运行”。其核心概念可概括为 3 个核心组件:
- 镜像(Image):应用的 “只读模板”,包含运行所需的代码、依赖、系统工具、配置等(比如一个 Nginx 镜像包含 Nginx 程序、配置文件和基础操作系统环境)。镜像不能直接运行,是容器的 “蓝图”。
- 容器(Container):镜像的 “运行实例”,是镜像加载到内存后的动态状态。容器是独立隔离的,拥有自己的文件系统、网络空间,与宿主机和其他容器互不干扰(类似轻量级虚拟机,但更高效)。
- 仓库(Repository):存放镜像的 “仓库”,类似代码仓库(如 GitHub)。官方仓库是 Docker Hub,包含海量现成镜像(如 Nginx、MySQL、Python 等),也可搭建私有仓库(如 Harbor)。
二、Docker 的历史
- 2013 年:由 Solomon Hykes 主导的团队在 PyCon 大会上首次公开 Docker,最初基于 Linux 的 LXC(Linux Container)技术实现,主打 “Build, Ship, Run”(构建、发布、运行)理念。
- 2014 年:脱离 LXC,自研容器运行时(runC),并开源核心组件,迅速成为容器技术的事实标准。
- 2015 年:成立 OCI(开放容器倡议),推动容器技术标准化,避免厂商锁定。
- 2019 年:Docker 公司将企业业务出售给 Mirantis,专注于开发者工具(如 Docker Desktop),但 Docker 作为容器技术的代名词已深入人心。
三、Docker 的核心作用
- 解决 “环境不一致” 问题:开发环境、测试环境、生产环境的依赖差异常导致 “本地能跑,线上崩了”,Docker 通过镜像打包所有依赖,确保应用在任何安装了 Docker 的环境中行为一致。
- 轻量级隔离:相比虚拟机(VM),容器无需模拟完整操作系统,直接共享宿主机内核,启动速度快(秒级)、资源占用低(单机可运行成百上千容器)。
- 快速部署与扩展:基于镜像可一键启动容器,配合编排工具(如 K8s)可实现秒级扩容缩容,适合微服务和云原生架构。
- 简化配置管理:镜像包含所有配置,无需手动在每台机器上部署依赖,减少 “重复配置” 的工作量。
四、与 Docker 类似的工具
Docker 是容器技术的代表,但同类工具可分为 “容器运行时” 和 “容器编排平台” 两类:
1. 容器运行时(替代 Docker 的核心运行能力)
- Podman:RedHat 推出的无守护进程(daemonless)容器工具,命令与 Docker 兼容(可直接用
alias docker=podman替代),更安全(无 root 权限的 daemon)。 - containerd:最初是 Docker 的底层组件,后独立成 OCI 标准工具,现在 Docker 默认用 containerd 作为运行时,轻量且稳定。
- LXC/LXD:偏向 “系统容器”(模拟完整操作系统,如一个小型 Ubuntu),适合长期运行的服务,而 Docker 更偏向 “应用容器”(聚焦单个应用)。
- rkt:CoreOS(后被 RedHat 收购)推出的容器引擎,强调安全性和可组合性,兼容 OCI 标准,但市场份额较小。
2. 容器编排平台(管理大规模容器集群)
- Kubernetes(K8s):容器编排的事实标准,可管理成百上千容器,提供自动扩缩容、自愈、负载均衡等能力,常与 Docker 配合使用(Docker 负责运行容器,K8s 负责调度)。
- Docker Swarm:Docker 官方的轻量级编排工具,与 Docker 集成度高,适合小规模集群,但功能不如 K8s 丰富。
- Apache Mesos:通用集群管理工具,可同时管理容器和非容器任务(如 Hadoop),适合复杂混合集群。
五、核心操作实战:从安装到部署

步骤 1:安装 Docker 并验证
-
Windows/Mac:直接下载 Docker Desktop,安装后启动(会自动启动 Docker 引擎)。
-
Linux(以 Ubuntu 为例):
# 安装依赖 sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-release # 添加Docker官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 配置仓库 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装Docker sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io # 启动Docker并设置开机自启 sudo systemctl start docker sudo systemctl enable docker -
验证安装:终端输入
docker --version,显示版本号即成功(如Docker version 24.0.6, build ed223bc)。再运行docker run hello-world,若看到 “Hello from Docker!” 提示,说明 Docker 可正常工作(会自动拉取 hello-world 镜像并启动容器)。
步骤 2:镜像核心操作
镜像操作是管理 “应用模板” 的基础,常用命令如下:
-
拉取镜像(从仓库下载镜像):
# 格式:docker pull 镜像名:版本(不指定版本默认拉取latest) docker pull nginx:latest # 拉取最新版Nginx镜像 docker pull mysql:8.0 # 拉取8.0版本MySQL镜像 -
查看本地镜像:
docker images # 列出所有本地镜像(包含镜像名、版本、ID、大小等) -
删除镜像(需先删除依赖该镜像的容器):
# 格式:docker rmi 镜像ID/镜像名:版本 docker rmi nginx:latest # 通过镜像名删除 docker rmi a1b2c3d4 # 通过镜像ID(前几位即可)删除
步骤 3:容器核心操作
容器是镜像的运行实例,核心操作围绕 “启动、查看、操作、停止、删除” 展开:
-
启动容器(从镜像创建并运行容器):
# 格式:docker run [参数] 镜像名 [容器内命令] # 示例:启动一个Nginx容器,命名为mynginx,后台运行,将容器80端口映射到宿主机8080端口 docker run -d -p 8080:80 --name mynginx nginx参数说明:
-d:后台运行容器( detached );-p 宿主机端口:容器端口:端口映射(外部通过宿主机端口访问容器内服务);--name:给容器起别名(方便后续操作)。
-
查看容器:
docker ps # 查看正在运行的容器 docker ps -a # 查看所有容器(包括已停止的) -
进入容器内部操作(交互式访问):
# 格式:docker exec -it 容器名/ID 终端命令 docker exec -it mynginx /bin/bash # 进入mynginx容器,启动bash终端进入后可执行容器内命令(如
ls查看文件、cat /etc/nginx/nginx.conf查看 Nginx 配置),输入exit退出容器。 -
停止 / 启动容器:
docker stop mynginx # 停止运行中的mynginx容器 docker start mynginx # 启动已停止的mynginx容器 -
删除容器(需先停止,或强制删除):
docker rm mynginx # 删除已停止的容器 docker rm -f mynginx # 强制删除运行中的容器(-f=force)
步骤 4:实战部署:容器化运行一个自定义静态网页
目标:将本地的index.html部署到 Nginx 容器,通过浏览器访问。
-
准备本地文件:在本地创建一个目录(如
/home/user/myweb),并新建index.html:<!DOCTYPE html> <html> <body> <h1>我的第一个Docker容器网页</h1> <p>通过Docker部署,真简单!</p> </body> </html> -
启动 Nginx 容器并挂载本地目录:用
-v参数将本地目录挂载到容器内 Nginx 的默认网页目录(/usr/share/nginx/html),实现 “本地修改,容器内实时生效”:# 注意替换本地目录路径(Windows用绝对路径如C:/user/myweb,Linux/Mac用/home/user/myweb) docker run -d -p 80:80 --name myweb -v /home/user/myweb:/usr/share/nginx/html nginx -
验证效果:打开浏览器,访问
http://localhost(或宿主机 IP),即可看到自定义的网页内容。若修改本地index.html,刷新浏览器会直接生效(无需重启容器)。
小结
Docker 的核心价值是 “用镜像打包环境,用容器运行应用”,通过上述操作可快速掌握镜像管理、容器生命周期控制和基础部署。后续可深入学习 Dockerfile(自定义镜像)、Docker Compose(多容器编排)等进阶内容,应对更复杂的应用场景。
更多推荐



所有评论(0)