Docker容器化技术入门:从安装到实操
摘要
Docker是当下主流开源容器化引擎,核心思想是一次打包,随处运行。它把应用程序、运行时环境、依赖库、配置文件统一打包为镜像,基于镜像启动轻量级容器。容器隔离性优于传统虚拟机,启动速度快、资源占用低,广泛用于开发环境统一、服务部署、CI/CD持续集成。本文从基础概念、多平台安装步骤、常用命令、实战示例、镜像加速、数据持久化几个维度完整讲解Docker落地使用。
一、Docker核心概念
- 镜像(Image):只读模板,是创建容器的“模板”,包含应用程序和全套依赖,不能修改。例如
nginx、php镜像。 - 容器(Container):镜像运行实例,读写层。一个镜像可以启动多个独立容器;容器停止后,内部数据默认会丢失。
- 仓库(Registry):存放镜像的仓库,官方公共仓库Docker Hub,国内可用阿里云、腾讯云镜像仓库。
- Docker引擎:后台守护进程,负责管理镜像、容器、网络、存储。
容器和虚拟机区别:虚拟机是完整操作系统内核,体积大,启动分钟级;Docker共享宿主机内核,容器大小MB级别,秒级启动。
二、Docker安装教程
2.1 Linux(CentOS7/8,服务器最常用)
# 1.安装依赖工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# 2.配置国内docker源
yum-config-manager --add-repo [https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo](https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo)
# 3.安装Docker社区版
yum install docker-ce docker-ce-cli containerd.io -y
# 4.启动并设置开机自启
systemctl start docker
systemctl enable docker
# 验证安装
docker --version
# 测试运行hello-world
docker run hello-world出现hello-world提示,代表安装成功。
2.2 Ubuntu系统安装
# 更新源,安装依赖
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release
# 添加docker密钥
curl -fsSL [https://download.docker.com/linux/ubuntu/gpg](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](https://download.docker.com/linux/ubuntu) $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io -y
# 启动
sudo systemctl start docker
sudo systemctl enable docker
# 免sudo执行docker(可选推荐)
sudo usermod -aG docker $USER2.3 Windows系统安装(Windows10/11,你的Windows服务器)
Windows需要开启WSL2作为后端,Windows Server也支持Docker Desktop
开启WSL2功能,PowerShell(管理员)执行:
wsl --install重启系统。
- 下载Docker Desktop安装包,安装时勾选 Use WSL2 instead of Hyper-V
- 安装完成启动Docker Desktop,等待后台引擎启动
打开PowerShell验证:
docker --version docker run hello-world注意:Windows上Docker底层依赖WSL2虚拟机,会占用一部分内存,2核4G服务器可以使用,2核2G谨慎使用。
三、配置国内镜像加速(必做,解决拉取镜像缓慢)
Docker默认从国外仓库拉取镜像,速度极慢,配置国内镜像源。
编辑docker守护进程配置文件/etc/docker/daemon.json(Linux),Windows在Docker Desktop设置 → Docker Engine:
{
"registry-mirrors": [
"shturl.cc/N78VFj7NWAYvr7PxD",
"[https://docker.mirrors.ustc.edu.cn](https://docker.mirrors.ustc.edu.cn)"
]
}Linux执行重启生效:
systemctl daemon-reload
systemctl restart docker四、Docker常用基础命令
4.1 镜像管理
# 搜索镜像
docker search nginx
# 拉取镜像(不加tag默认latest最新版)
docker pull nginx
# 查看本地全部镜像
docker images
# 删除本地镜像
docker rmi 镜像ID4.2 容器管理(最核心)
# 启动容器示例:后台运行,端口映射,命名
docker run -d --name mynginx -p 8080:80 nginx
# 参数说明
# -d:后台守护运行(detach)
# --name:自定义容器名称
# -p 宿主机端口:容器内端口:端口映射
# -v 宿主机目录:容器目录:数据卷挂载,持久化数据
# 查看正在运行容器
docker ps
# 查看所有容器(含停止的)
docker ps -a
# 停止容器
docker stop mynginx
# 启动已停止容器
docker start mynginx
# 删除容器(必须先停止)
docker rm mynginx
# 进入正在运行容器内部交互终端
docker exec -it mynginx /bin/bash
# 查看容器日志
docker logs mynginx
# 实时跟踪日志输出
docker logs -f mynginx五、实战案例:使用Docker部署Nginx服务
拉取Nginx镜像
docker pull nginx启动容器,端口映射8080,挂载本地目录实现配置持久化
docker run -d --name nginx-demo -p 8080:80 -v /data/nginx/html:/usr/share/nginx/html nginx- 访问宿主机IP:8080,即可打开Nginx默认页面。
- 说明:
-v挂载,宿主机/data/nginx/html目录和容器内网站目录双向同步,容器销毁,网页文件还保存在宿主机,实现数据持久化。
六、Dockerfile:自定义构建镜像
Dockerfile是镜像构建脚本,用来打包自己应用,示例:简单PHP服务Dockerfile
# 基础镜像
FROM php:7.4-fpm
# 设置工作目录
WORKDIR /var/www/html
# 复制当前目录代码到镜像内
COPY . .
# 暴露端口
EXPOSE 9000
# 容器启动命令
CMD ["php-fpm"]构建镜像命令:
docker build -t my-php:v1 .-t:给镜像打标签名称,.代表Dockerfile在当前目录。
构建完成后,就可以用docker run启动自己制作的镜像。
七、Docker Compose 多容器编排(推荐)
当项目需要多个容器联动(例如Nginx+PHP+MySQL),手写多条docker run命令不方便,使用docker-compose.yml文件统一管理。
示例 docker-compose.yml:
version: '3'
services:
nginx:
image: nginx
ports:
- "80:80"
volumes:
- ./nginx/conf:/etc/nginx/conf.d
depends_on:
- php
php:
image: php:7.4-fpm
volumes:
- ./wwwroot:/var/www/html常用命令:
# 启动全部服务,后台运行
docker-compose up -d
# 停止并删除容器
docker-compose down
# 查看日志
docker-compose logs -f八、生产环境使用注意事项
- 数据持久化:容器内部数据生命周期跟随容器,重要业务数据一定要使用
-v挂载数据卷,不要写在容器内部。 - 端口安全:不要随意映射高危端口,云服务器记得在安全组开放对应端口。
- 镜像版本:生产环境不要使用
latest标签,固定版本号,避免自动更新带来兼容性问题。 - 资源限制:生产容器建议配置内存、CPU限制,防止单个容器耗尽宿主机资源,例如:
--memory 512m --cpus 0.5。 - 日志管理:容器日志默认输出到宿主机,长期运行日志会占用大量磁盘,配置日志轮转。
九、总结
Docker通过容器化技术解决环境不一致、部署繁琐的痛点。学习路径:掌握镜像/容器概念 → 完成安装+镜像加速 → 熟悉基础docker run等命令 → 练习Dockerfile自制镜像,最后学习Docker Compose编排多服务。在Web开发场景,像Nginx、PHP、MySQL、Typecho博客这类服务,都可以直接使用Docker快速部署,隔离环境,简化运维。