Docker 从零入门
Docker 从零入门
一、理解 Docker 的基本概念
- 什么是容器?
- 容器是一种轻量级、可移植的虚拟化技术,将应用及其依赖打包成一个独立运行环境。
- 对比虚拟机:容器共享宿主机的内核,启动更快、资源占用更低。
- 核心概念
- 镜像(Image):只读模板,用于创建容器(如
ubuntu:20.04
、nginx:latest
)。 - 容器(Container):镜像的运行实例(一个进程隔离环境)。
- 仓库(Registry):存储和分发镜像的服务(如 Docker Hub、阿里云镜像仓库)。
- Dockerfile:定义镜像构建步骤的文本文件。
- Docker Compose:通过 YAML 文件管理多个容器的工具。
- 镜像(Image):只读模板,用于创建容器(如
二、安装 Docker
- 根据操作系统选择安装方式:
- Windows/macOS:下载 Docker Desktop(需开启虚拟化支持)。
- Linux:使用包管理器安装(如 Ubuntu 的
apt-get install docker.io
)。 - 验证安装:运行
docker --version
和docker run hello-world
。
- 配置镜像加速器(国内用户):
- 修改 Docker 配置(如阿里云镜像加速器),提升拉取镜像速度。
三、基础操作与实践
1. 运行第一个容器
# 拉取镜像
docker pull nginx:latest
# 运行容器(-d 后台运行,-p 映射端口)
docker run -d -p 80:80 --name my-nginx nginx
# 访问 http://localhost 查看效果
2. 常用命令
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器
docker stop <容器ID> # 停止容器
docker rm <容器ID> # 删除容器
docker images # 查看本地镜像
docker rmi <镜像名> # 删除镜像
docker logs <容器ID> # 查看容器日志
3. 构建自定义镜像
创建一个简单的 Dockerfile
:
# 基于 Python 官方镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制代码到容器
COPY . .
# 安装依赖
RUN pip install -r requirements.txt
# 容器启动命令
CMD ["python", "app.py"]
构建镜像:
docker build -t my-python-app .
四、进阶学习
1. 数据持久化(Volumes)
# 创建卷并挂载到容器
docker volume create my-vol
docker run -d -v my-vol:/data --name my-container nginx
2. 网络配置
# 创建自定义网络
docker network create my-net
docker run -d --network my-net --name app1 nginx
docker run -d --network my-net --name app2 nginx
3. Docker Compose
创建 docker-compose.yml
管理多容器应用:
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
运行:
docker-compose up -d
五、学习资源推荐
- 官方文档:
- 书籍:
- 《Docker 技术入门与实战》
- 《Docker Deep Dive》(深入理解 Docker 原理)
- 视频教程:
- B站:搜索“Docker 入门教程”(如“狂神说Java”系列)。
- Udemy:Docker Mastery(英文)。
- 实战项目:
- 部署一个 WordPress 博客(配合 MySQL)。
- 用 Docker 搭建 Python/Node.js 开发环境。
- 尝试将本地项目容器化并推送到 Docker Hub。
六、常见问题与调试
- 容器启动失败:使用
docker logs <容器ID>
查看日志。 - 端口冲突:检查宿主机端口是否被占用(
netstat -tuln
)。 - 权限问题:在 Linux 上使用
sudo
或将用户加入docker
组。 - 数据丢失:通过卷(Volumes)持久化数据。
七、加入社区
- Stack Overflow:搜索 Docker 相关问题标签。
- GitHub:参与开源 Docker 项目或学习他人代码。
- 论坛:Reddit 的 r/docker、中文社区(如 Docker Hub 中文社区)。
Docker 从零入门
http://ddxd.xyz//archives/docker-cong-ling-ru-men