在 Ubuntu 系统上生成和加载 Docker 镜像的完整指南


环境准备

在开始之前,请确保您的系统符合以下要求:

  • 操作系统: Ubuntu 20.04 或更高版本。
  • 用户权限 : 拥有 sudo 权限。
  • 网络连接: 确保能够访问互联网以安装依赖和拉取镜像。

安装 Docker

  1. 更新系统包索引:

    bash 复制代码
    sudo apt update
  2. 安装必要的依赖:

    bash 复制代码
    sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
  3. 添加 Docker 的 GPG 密钥:

    bash 复制代码
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  4. 添加 Docker 的 APT 源:

    bash 复制代码
    echo "deb [arch=$(dpkg --print-architecture) 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 Engine:

    bash 复制代码
    sudo apt update
    sudo apt install -y docker-ce docker-ce-cli containerd.io
  6. 验证安装是否成功:

    bash 复制代码
    docker --version

    输出示例:

    复制代码
    Docker version 20.10.21, build baeda1f

生成 Docker 镜像

创建基础应用

我们以创建一个简单的 Python Web 应用为例。以下是项目结构:

复制代码
myapp/
├── app.py
├── requirements.txt
└── Dockerfile
  1. 创建 app.py 文件:

    python 复制代码
    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route('/')
    def home():
        return "Hello, Docker!"
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=5000)
  2. 创建 requirements.txt 文件:

    复制代码
    flask
  3. 创建 Dockerfile 文件:

    dockerfile 复制代码
    # 基础镜像
    FROM python:3.9-slim
    
    # 设置工作目录
    WORKDIR /app
    
    # 复制项目文件
    COPY . /app
    
    # 安装依赖
    RUN pip install -r requirements.txt
    
    # 暴露端口
    EXPOSE 5000
    
    # 启动应用
    CMD ["python", "app.py"]

构建镜像

  1. 打开终端,进入项目目录:

    bash 复制代码
    cd myapp
  2. 构建镜像:

    bash 复制代码
    sudo docker build -t myapp:1.0 .
  3. 查看构建完成的镜像:

    bash 复制代码
    docker images

    示例输出:

    复制代码
    REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
    myapp        1.0       abcdef123456   10 seconds ago   23.4MB

加载 Docker 镜像

本地加载

保存镜像为文件
  1. 使用 docker save 命令导出镜像:

    bash 复制代码
    docker save -o myapp.tar myapp:1.0

    这将在当前目录生成 myapp.tar 文件。

  2. 验证文件大小:

    bash 复制代码
    ls -lh myapp.tar
加载镜像到 Docker
  1. 将镜像加载回 Docker:

    bash 复制代码
    docker load -i myapp.tar
  2. 确认镜像已加载:

    bash 复制代码
    docker images

上传到远程仓库

登录 Docker Hub
  1. 登录 Docker Hub:

    bash 复制代码
    docker login

    输入用户名和密码。

推送镜像
  1. 为镜像添加标签:

    bash 复制代码
    docker tag myapp:1.0 <your-dockerhub-username>/myapp:1.0
  2. 推送镜像:

    bash 复制代码
    docker push <your-dockerhub-username>/myapp:1.0
  3. 在 Docker Hub 上查看已上传的镜像。


测试 Docker 容器

  1. 运行容器:

    bash 复制代码
    docker run -d -p 5000:5000 myapp:1.0
  2. 验证服务是否启动:

    打开浏览器,访问 http://localhost:5000,应该看到:

    复制代码
    Hello, Docker!
  3. 查看运行中的容器:

    bash 复制代码
    docker ps
  4. 停止容器:

    bash 复制代码
    docker stop <container-id>

常见问题与解决

构建失败

问题 :构建镜像时出现 pip 相关错误。

解决 :确保 requirements.txt 文件正确且网络通畅。可以尝试指定国内源:

dockerfile 复制代码
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

容器无法访问

问题:容器运行后无法通过浏览器访问。

解决 :确保在 Dockerfile 中暴露了正确的端口,并在运行时使用了 -p 参数进行端口映射。


总结

通过本文的详细步骤,我们学习了如何在 Ubuntu 系统上安装 Docker、生成镜像、保存与加载镜像,并通过实际案例运行一个容器化的 Python Web 应用。希望本文能帮助您快速掌握 Docker 的核心操作,提升开发与运维效率。

如有任何疑问,欢迎留言讨论!

相关推荐
Lethehong9 分钟前
从零搭建 BettaFish:打造自己的多 Agent 舆情分析系统
人工智能·docker·开源·蓝耘元生代·蓝耘maas
Jonathan Star15 分钟前
在 Claude Code 中重新加载插件,最常用的是 **`/reload-plugins` 热重载**,也
linux·运维·服务器
A.A呐18 分钟前
【Linux第二十一章】http
linux·运维·http
王琦031822 分钟前
第七章 命令解释器-shell
linux·运维·服务器
RisunJan25 分钟前
Linux命令-mv(移动或重命名文件和目录)
linux·运维·服务器
wh_xia_jun28 分钟前
Windows/Linux 自动适配 + Pydantic Settings 配置
linux·运维·windows
第二只羽毛37 分钟前
C++ 高并发内存池4
java·大数据·linux·c++·算法
风吹落叶325739 分钟前
RabbitMQ 集群
linux·分布式·rabbitmq
斌味代码42 分钟前
Docker + 宝塔:容器化部署最佳实践(2026最新版)
运维·docker·容器
克莱因35843 分钟前
Linux 进程监控
linux·运维·服务器