Docker 从零入门

Docker 从零入门

一、理解 Docker 的基本概念

  1. 什么是容器?
    • 容器是一种轻量级、可移植的虚拟化技术,将应用及其依赖打包成一个独立运行环境。
    • 对比虚拟机:容器共享宿主机的内核,启动更快、资源占用更低。
  2. 核心概念
    • 镜像(Image):只读模板,用于创建容器(如 ubuntu:20.04nginx:latest)。
    • 容器(Container):镜像的运行实例(一个进程隔离环境)。
    • 仓库(Registry):存储和分发镜像的服务(如 Docker Hub、阿里云镜像仓库)。
    • Dockerfile:定义镜像构建步骤的文本文件。
    • Docker Compose:通过 YAML 文件管理多个容器的工具。

二、安装 Docker

  1. 根据操作系统选择安装方式
    • Windows/macOS:下载 Docker Desktop(需开启虚拟化支持)。
    • Linux:使用包管理器安装(如 Ubuntu 的 apt-get install docker.io)。
    • 验证安装:运行 docker --versiondocker run hello-world
  2. 配置镜像加速器(国内用户)
    • 修改 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

五、学习资源推荐

  1. 官方文档
  2. 书籍
    • 《Docker 技术入门与实战》
    • 《Docker Deep Dive》(深入理解 Docker 原理)
  3. 视频教程
    • B站:搜索“Docker 入门教程”(如“狂神说Java”系列)。
    • Udemy:Docker Mastery(英文)。
  4. 实战项目
    • 部署一个 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
作者
Administrator
发布于
2025年02月18日
许可协议