.png)
Docker 从入门到实战指南
Docker 从入门到实战指南
目录
1. Docker 核心概念
1.1 核心组件
- 镜像(Image)
只读模板,包含运行环境和应用程序(如ubuntu:22.04
、nginx:latest
)。 - 容器(Container)
镜像的运行实例,拥有独立的文件系统、网络和进程。 - 仓库(Registry)
存储镜像的服务,默认官方仓库为 Docker Hub。
1.2 架构
- Docker Daemon:后台服务,管理容器和镜像。
- Docker Client:命令行工具,与 Daemon 交互。
- Dockerfile:定义镜像构建步骤的脚本。
2. Docker 安装与配置
2.1 安装 Docker
# Ubuntu/Debian
sudo apt update
sudo apt install docker.io
sudo systemctl enable --now docker
# CentOS/RHEL
sudo yum install docker
sudo systemctl enable --now docker
# 验证安装
docker --version
docker info
2.2 配置镜像加速(国内用户)
编辑 /etc/docker/daemon.json
:
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://mirror.baidubce.com"
]
}
重启服务:
sudo systemctl restart docker
3. 镜像管理
3.1 拉取镜像
docker pull ubuntu:22.04 # 拉取官方镜像
docker pull nginx:alpine # 拉取特定版本
3.2 查看镜像
docker images # 列出本地镜像
docker image ls -a # 显示所有镜像(含中间层)
3.3 删除镜像
docker rmi ubuntu:22.04 # 删除单个镜像
docker image prune # 清理未使用的镜像
4. 容器操作
4.1 启动容器
# 启动交互式容器(退出后容器停止)
docker run -it --name my_ubuntu ubuntu:22.04 /bin/bash
# 启动后台容器
docker run -d --name my_nginx -p 8080:80 nginx:alpine
4.2 管理容器
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(含已停止)
docker stop my_nginx # 停止容器
docker start my_nginx # 启动已停止的容器
docker rm my_nginx # 删除容器
4.3 进入容器
docker exec -it my_nginx /bin/sh # 进入运行中的容器
5. 数据卷与持久化
5.1 挂载主机目录
# 将主机 `/data` 挂载到容器的 `/app`
docker run -v /data:/app -d my_app
5.2 创建命名卷
docker volume create my_volume
docker run -v my_volume:/data -d my_app
5.3 查看数据卷
docker volume ls
docker volume inspect my_volume
6. 网络管理
6.1 查看网络
docker network ls
docker network inspect bridge
6.2 自定义网络
docker network create my_network
docker run --network=my_network -d my_app
7. Dockerfile 编写
7.1 基础示例
# 使用官方 Python 镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制依赖文件并安装
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 复制应用代码
COPY . .
# 暴露端口
EXPOSE 8000
# 启动命令
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app:app"]
7.2 构建镜像
docker build -t my_python_app:1.0 .
8. Docker Compose
8.1 编写 docker-compose.yml
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: secret
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
8.2 常用命令
docker-compose up -d # 启动服务
docker-compose down # 停止并删除容器
docker-compose logs # 查看日志
9. 实战案例
9.1 部署 WordPress
# docker-compose.yml
version: '3.8'
services:
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: secret
volumes:
- wordpress_data:/var/www/html
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: secret
volumes:
- mysql_data:/var/lib/mysql
volumes:
wordpress_data:
mysql_data:
启动服务:
docker-compose up -d
10. 调试与排错
# 查看容器日志
docker logs my_container
# 检查容器元数据
docker inspect my_container
# 查看资源使用
docker stats
附:学习资源
- 官方文档: https://docs.docker.com
- Docker Hub: https://hub.docker.com
- Play with Docker: https://labs.play-with-docker.com
提示
- 容器应保持无状态,重要数据通过卷持久化。
- 优先使用
Docker Compose
管理多容器应用。 - 定期清理未使用的镜像和容器以节省空间:
docker system prune -a
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 白芷舒华