Docker 从入门到上手:一篇就够了

Docker 从入门到上手:一篇就够了

李忠衍
2026-07-09 / 0 评论 / 8 阅读 / 正在检测是否收录...
Docker 是现代开发的必备技能。本文从零开始,带你理解 Docker 的核心概念并上手实操。

什么是 Docker?

Docker 是一个容器化平台,可以把应用及其依赖打包到一个可移植的容器中,在任何环境中运行。

镜像 vs 容器:

  • 镜像(Image):只读模板,类似操作系统的 ISO 文件
  • 容器(Container):镜像的运行实例,类似虚拟机

📦 安装 Docker

# Ubuntu/Debian
curl -fsSL https://get.docker.com | sudo sh

# 验证安装
sudo docker --version

# 免 sudo 运行(需重新登录)
sudo usermod -aG docker $USER

🏃 基础操作

拉取并运行镜像

docker run hello-world                    # 测试安装
docker run -d -p 80:80 nginx              # 运行 Nginx
docker run -d --name my-mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0

容器管理

docker ps                    # 查看运行中的容器
docker ps -a                 # 查看所有容器(含已停止的)
docker stop container_id     # 停止容器
docker start container_id    # 启动已停止的容器
docker rm container_id       # 删除容器
docker logs container_id     # 查看容器日志

镜像管理

docker images                # 查看本地镜像
docker pull ubuntu:22.04     # 拉取镜像
docker rmi image_id          # 删除镜像
docker system prune          # 清理未使用的镜像和容器

🐳 Docker Compose — 多容器管理

创建 docker-compose.yml 文件:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: mysql:8.0
    environment:
      - MYSQL_ROOT_PASSWORD=123456
docker-compose up -d         # 启动所有服务
docker-compose down          # 停止所有服务
docker-compose ps            # 查看服务状态

📂 数据持久化(Volume)

容器删除后数据会丢失,用 Volume 来持久化:

docker run -v /host/data:/container/data image_name

# 或者用 named volume
docker volume create mydata
docker run -v mydata:/data image_name

🌐 网络

docker network create mynet              # 创建网络
docker run --network mynet --name app1 image1
docker run --network mynet --name app2 image2
# 容器之间可以通过名称互相访问!

🔧 Dockerfile — 构建自己的镜像

FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
docker build -t myapp:latest .
docker run -p 5000:5000 myapp:latest

💡 实用小技巧

  • 忘记某个命令的参数?docker 命令 --help
  • 进入运行中的容器:docker exec -it container_id bash
  • 查看容器资源占用:docker stats
  • 清理所有无用资源:docker system prune -a


下一篇预告:用 Docker 部署一个完整的 Web 应用(Nginx + Flask + MySQL)。

0

评论 (0)

取消