文章最后更新时间:2025年04月17日
Docker 快速入门与实用指南
一、Docker 核心概念
镜像(Image)
- 静态模板文件,包含运行环境和应用程序代码(如
nginx:latest
)。 - 类比:操作系统的 ISO 安装镜像。
- 静态模板文件,包含运行环境和应用程序代码(如
容器(Container)
- 镜像的运行实例,拥有独立进程和文件系统。
- 类比:虚拟机中的操作系统实例。
仓库(Registry)
- 镜像存储中心,默认使用 Docker Hub(如
docker.io/library/ubuntu
)。
- 镜像存储中心,默认使用 Docker Hub(如
二、Docker 安装与配置
安装 Docker
# Ubuntu sudo apt-get update && sudo apt-get install docker.io # CentOS sudo yum install docker # macOS/Windows 下载 Docker Desktop
配置镜像加速器(国内用户)
编辑/etc/docker/daemon.json
:{ "registry-mirrors": ["https://registry.docker-cn.com"] }
重启服务:
sudo systemctl restart docker
三、常用 Docker 命令
1. 镜像管理
#搜索镜像
docker search [关键词]
# 拉取镜像
docker pull [镜像名]:[标签]
docker pull nginx:latest
# 查看本地镜像
docker images
docker image ls
# 删除镜像
docker rmi [镜像名/ID] # 删除单个镜像
docker rmi [镜像1] [镜像2] # 删除多个镜像
docker image prune # 删除所有悬虚镜像(未被任何容器引用的中间层镜像)
#强制删除(即使有容器正在运行):
docker rmi -f [镜像ID]
docker rmi nginx:alpine # 删除指定镜像
docker rmi $(docker images -q) # 删除所有本地镜像(谨慎使用!)
# 导出镜像
docker save -o [文件名.tar] [镜像名]
docker save -o nginx.tar nginx:latest
#从文件导入镜像
docker load -i [文件名.tar]
docker load -i nginx.tar
#查看镜像详细信息
docker inspect [镜像名/ID]
2. 容器操作
# 启动容器(-d 后台运行,-p 端口映射)
docker run -d -p 80:80 --name my_nginx nginx
# 查看运行中的容器
docker ps
# 查看所有容器(包括已停止的)
docker ps -a
# 进入容器执行命令
docker exec -it my_nginx /bin/bash
# 停止/启动容器
docker stop my_nginx
docker start my_nginx
# 删除容器
docker rm my_nginx
# 查看容器日志
docker logs -f my_nginx
3. 数据持久化
# 挂载主机目录到容器
docker run -v /host/path:/container/path nginx
# 使用数据卷(自动管理)
docker volume create my_vol
docker run -v my_vol:/data nginx
四、Dockerfile 实战
# 基础镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制代码并安装依赖
COPY requirements.txt .
RUN pip install -r requirements.txt
# 复制应用代码
COPY . .
# 暴露端口
EXPOSE 8000
# 启动命令
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app:app"]
构建镜像:
docker build -t myapp:1.0 .
五、网络与多容器通信
创建自定义网络
docker network create my_network
容器加入同一网络
docker run -d --net=my_network --name app myapp:1.0 docker run -d --net=my_network --name redis redis:alpine
容器间可直接通过容器名通信(如
app
访问redis:6379
)。
六、Docker Compose 编排
docker-compose.yml
示例:
version: '3'
services:
web:
image: myapp:1.0
ports:
- "8000:8000"
volumes:
- ./logs:/app/logs
depends_on:
- redis
redis:
image: redis:alpine
volumes:
- redis_data:/data
volumes:
redis_data:
常用命令:
docker-compose up -d # 启动服务
docker-compose down # 停止并删除容器
docker-compose logs -f # 查看日志
七、实用技巧与问题排查
清理无用资源
docker system prune -a # 删除所有停止的容器、未使用的镜像和网络
查看容器资源占用
docker stats
容器内调试工具安装
# Alpine 镜像安装常用工具 apk add --no-cache curl vim # Ubuntu 镜像 apt-get update && apt-get install -y net-tools
常见问题排查
- 容器启动失败:查看日志
docker logs <container_id>
- 端口冲突:检查
-p
参数或使用docker ps
查看占用 - 权限问题:添加
--user $(id -u)
或配置用户组
- 容器启动失败:查看日志
八、学习资源推荐
- 官方文档: https://docs.docker.com
- Docker Hub: https://hub.docker.com
- Play with Docker: 在线实验平台
掌握以上内容即可应对 90% 的日常开发需求!
文章版权声明:除非注明,否则均为柳三千运维录原创文章,转载或复制请以超链接形式并注明出处。