Docker 入门学习

举报
William 发表于 2025/01/27 00:20:11 2025/01/27
【摘要】 Docker 入门学习 1. 介绍Docker 是一种容器化技术,允许开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中。容器可以在任何支持 Docker 的环境中运行,确保环境一致性,简化开发和部署流程。 2. 应用使用场景开发环境一致性:确保开发、测试和生产环境一致。微服务架构:将应用程序拆分为多个独立的容器。持续集成/持续部署(CI/CD):自动化构建、测试和部署。快速部署:快...

Docker 入门学习

1. 介绍

Docker 是一种容器化技术,允许开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中。容器可以在任何支持 Docker 的环境中运行,确保环境一致性,简化开发和部署流程。

2. 应用使用场景

  • 开发环境一致性:确保开发、测试和生产环境一致。
  • 微服务架构:将应用程序拆分为多个独立的容器。
  • 持续集成/持续部署(CI/CD):自动化构建、测试和部署。
  • 快速部署:快速启动和停止应用程序。
  • 资源隔离:为每个应用程序提供独立的运行环境。

3. 不同场景下的详细代码实现

场景 1:运行一个简单的 Python 应用

功能:在 Docker 容器中运行一个简单的 Python 应用。

代码实现:
  1. 创建 app.py

    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def hello():
        return "Hello, Docker!"
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=5000)
    
  2. 创建 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"]
    
  3. 创建 requirements.txt

    Flask==2.0.1
    
  4. 构建 Docker 镜像:

    docker build -t python-app .
    
  5. 运行 Docker 容器:

    docker run -p 5000:5000 python-app
    
  6. 访问应用:
    打开浏览器,访问 http://localhost:5000,显示 “Hello, Docker!”。


场景 2:使用 Docker Compose 运行多容器应用

功能:使用 Docker Compose 运行一个包含 Web 应用和数据库的多容器应用。

代码实现:
  1. 创建 docker-compose.yml

    version: '3'
    services:
      web:
        build: .
        ports:
          - "5000:5000"
        depends_on:
          - redis
      redis:
        image: redis:alpine
    
  2. 更新 app.py

    from flask import Flask
    import redis
    
    app = Flask(__name__)
    cache = redis.Redis(host='redis', port=6379)
    
    @app.route('/')
    def hello():
        count = cache.incr('hits')
        return f"Hello, Docker! This page has been viewed {count} times."
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=5000)
    
  3. 更新 requirements.txt

    Flask==2.0.1
    redis==4.1.0
    
  4. 启动应用:

    docker-compose up
    
  5. 访问应用:
    打开浏览器,访问 http://localhost:5000,显示页面访问次数。


4. 原理解释

  • Docker 的核心概念

    • 镜像(Image):包含应用程序及其依赖的只读模板。
    • 容器(Container):镜像的运行实例。
    • Dockerfile:用于定义镜像构建过程的脚本。
    • Docker Compose:用于定义和运行多容器应用的工具。
  • 算法原理

    1. 构建镜像:根据 Dockerfile 构建镜像。
    2. 运行容器:从镜像启动容器。
    3. 网络通信:容器之间通过 Docker 网络通信。
    4. 数据持久化:通过卷(Volume)实现数据持久化。
  • 流程图

    编写 Dockerfile -> 构建镜像 -> 运行容器 -> 访问应用
    

5. 测试步骤

  1. 安装 Docker:
  2. 安装 Docker 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
    
  3. 运行代码:
    docker-compose up
    
  4. 检查应用是否正常运行。

6. 部署场景

  • 本地开发:在本地机器上运行 Docker 容器。
  • 云服务器:在云服务器上部署 Docker 容器。
  • Kubernetes:使用 Kubernetes 管理大规模容器化应用。

7. 材料链接


8. 总结

Docker 是一种强大的容器化技术,能够简化应用程序的开发、测试和部署流程。通过 Docker,可以实现环境一致性、快速部署和资源隔离。


9. 未来展望

  • 容器编排:深入学习 Kubernetes,实现大规模容器编排。
  • 安全优化:加强容器的安全性,如使用安全镜像、限制资源使用。
  • CI/CD 集成:将 Docker 集成到 CI/CD 管道中,实现自动化部署。
  • 边缘计算:在边缘设备上运行 Docker 容器,支持物联网应用。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。