一、Docker简介

Docker是一种容器化平台,可将应用程序及其依赖项打包在轻量级容器中运行。核心优势:

  • 环境一致性:解决"在我机器上能跑"的问题
  • 资源高效:共享操作系统内核,无需完整虚拟机
  • 快速部署:秒级启动容器

二、环境准备(Ubuntu示例)
# 1. 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc

# 2. 安装依赖
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

# 3. 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 4. 设置稳定版仓库
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 5. 安装Docker引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 6. 验证安装
sudo docker run hello-world

看到Hello from Docker!表示安装成功


三、核心概念
  1. 镜像(Image):只读模板,包含运行环境

    docker pull nginx:latest  # 下载官方Nginx镜像
    
  2. 容器(Container):镜像的运行实例

    docker run -d -p 8080:80 --name my_nginx nginx
    
    • -d:后台运行
    • -p 8080:80:主机8080端口映射容器80端口
  3. 仓库(Registry):镜像存储中心,默认Docker Hub


四、日常操作命令
# 查看运行中的容器
docker ps

# 查看所有容器(含已停止)
docker ps -a

# 停止/启动容器
docker stop my_nginx
docker start my_nginx

# 进入容器终端
docker exec -it my_nginx /bin/bash

# 查看日志
docker logs my_nginx

# 删除容器
docker rm my_nginx

# 删除镜像
docker rmi nginx:latest

五、实战:部署Python应用
  1. 创建项目目录

    mkdir myapp && cd myapp
    
  2. 创建app.py

    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def hello():
        return "Hello Docker World!"
    
    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=5000)
    
  3. 创建Dockerfile

    # 使用官方Python基础镜像
    FROM python:3.9-slim
    
    # 设置工作目录
    WORKDIR /app
    
    # 复制依赖文件
    COPY requirements.txt .
    
    # 安装依赖
    RUN pip install --no-cache-dir -r requirements.txt
    
    # 复制应用代码
    COPY . .
    
    # 暴露端口
    EXPOSE 5000
    
    # 启动命令
    CMD ["python", "app.py"]
    
  4. 创建requirements.txt

    flask==2.0.2
    
  5. 构建镜像

    docker build -t my-python-app .
    
  6. 运行容器

    docker run -d -p 5000:5000 --name myapp my-python-app
    

访问 http://localhost:5000 查看结果


六、数据持久化
# 创建数据卷
docker volume create mydata

# 挂载到容器
docker run -d -v mydata:/app/data --name db_container mysql

# 主机目录挂载
docker run -d -v /host/path:/container/path nginx

七、网络配置
# 创建自定义网络
docker network create my_network

# 容器加入网络
docker run -d --network=my_network --name web nginx
docker run -d --network=my_network --name db mongo

# 容器间通过名称通信
# 在web容器中: ping db

八、Docker Compose多容器管理
  1. 安装Compose

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    
  2. 创建docker-compose.yml

    version: '3'
    services:
      web:
        image: nginx:latest
        ports:
          - "8080:80"
      db:
        image: mysql:8.0
        environment:
          MYSQL_ROOT_PASSWORD: example
    
  3. 启动服务

    docker-compose up -d
    

九、最佳实践
  1. 使用.dockerignore文件排除无关文件
  2. 多阶段构建减小镜像体积
  3. 定期清理无用资源
    docker system prune -a -f
    
  4. 避免使用latest标签生产环境
  5. 设置容器资源限制
    docker run -d --memory=512m --cpus=1.5 nginx
    

通过本教程,您已掌握Docker核心操作。建议:

  1. Docker Playground在线练习
  2. 查阅官方文档
  3. 尝试容器化自己的项目
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐