Docker是目前最热门的容器化技术之一。本教程将从零开始带你安装并使用Docker,适合小白入门。
为什么需要Docker?
在传统开发中,部署应用需要在服务器上安装各种依赖环境,一旦出现版本不一致就会导致"在本地能跑,部署就报错"的问题。Docker通过容器隔离技术解决了环境一致性问题,让应用在任何环境下都能稳定运行。
使用Docker的优点:
- ✅ 环境一致性 — 开发、测试、生产环境完全一致
- ✅ 快速部署 — 几秒钟就能启动一个服务
- ✅ 资源节省 — 多个容器共享宿主机资源,占用更少
- ✅ 便于扩展 — 一键复制容器进行水平扩展
环境准备
本教程在 CentOS 7 / Ubuntu 20.04 / Windows 10 环境下均可操作。
安装 Docker(Ubuntu/Debian):
# 更新系统
sudo apt update
# 安装依赖
sudo apt install -y ca-certificates curl gnupg lsb-release
# 添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 添加 Docker 软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.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 update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 启动 Docker 服务
sudo systemctl enable docker
sudo systemctl start docker
# 验证安装
docker version
安装 Docker(CentOS):
# 卸载旧版本
sudo yum remove docker docker-client docker-common docker-engine
# 添加 Docker 仓库
sudo tee /etc/yum.repos.d/docker-ce.repo << 'EOF'
[docker-ce-stable]
name=Docker CE Stable
baseurl=https://download.docker.com/linux/centos/7/x86_64/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
EOF
# 安装
sudo yum install -y docker-ce
sudo systemctl start docker
sudo systemctl enable docker
# 验证
docker version
安装 Docker(Windows):
从Docker官网下载 Docker Desktop for Windows,直接安装即可。安装后需要开启 Hyper-V 或 WSL2。
基本命令详解
镜像相关命令
# 拉取镜像
docker pull nginx # 从 Docker Hub 拉取 nginx 镜像
docker pull redis:7.0 # 拉取指定版本的 Redis 镜像
# 查看本地镜像
docker images
# 删除镜像
docker rmi nginx
# 搜索镜像
docker search nginx
容器相关命令
# 运行容器
docker run -d --name mynginx -p 8080:80 nginx
# 查看容器
docker ps # 运行中的容器
docker ps -a # 所有容器
# 进入容器
docker exec -it mynginx /bin/bash
# 停止/启动/重启
docker stop mynginx
docker start mynginx
docker restart mynginx
# 删除容器
docker rm mynginx # 删除已停止容器
docker rm -f mynginx # 强制删除
# 查看日志
docker logs mynginx
docker logs -f mynginx # 实时跟踪
端口与文件映射
# 端口映射
docker run -d -p 8080:80 --name web nginx
# 文件映射
docker run -d -p 8080:80 -v /home/user/html:/usr/share/nginx/html --name web nginx
# 数据卷
docker volume create mydata
docker run -d -v mydata:/usr/share/nginx/html --name web nginx
docker volume ls
docker volume rm mydata
Docker Compose 批量管理
Docker Compose 可以在一个 docker-compose.yml 文件中定义多个容器服务。
docker-compose.yml 示例:
version: '3.8'
services:
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
restart: unless-stopped
redis:
image: redis:7
restart: unless-stopped
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- mysql_data:/var/lib/mysql
restart: unless-stopped
volumes:
mysql_data:
常用 Docker Compose 命令:
docker-compose up -d # 启动所有服务
docker-compose down # 停止并删除所有服务
docker-compose restart # 重启服务
docker-compose ps # 查看服务状态
docker-compose logs -f # 查看日志
构建自己的镜像
创建 Dockerfile 来构建自定义镜像:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
构建命令:
docker build -t myapp:v1.0 .
常见问题解决
1. Docker 命令提示权限不足
sudo usermod -aG docker $USER
2. 端口被占用
docker ps
docker stop 容器ID/名称
3. 容器自动重启
docker run -d --restart=always --name web nginx
最佳实践总结
1. 镜像选择: 优先使用 alpine 或 slim 版本,体积更小
2. 端口映射: 使用高端口(如 8080)而非特权端口
3. 数据持久化: 使用数据卷保存重要数据
4. 资源限制: 使用 --memory 和 --cpus 限制资源
5. 日志管理: 定时清理容器日志
💡 温馨提示: Docker入门后,建议学习 Docker Compose 和 Dockerfile,可以极大提升开发部署效率。