在 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 的核心操作,提升开发与运维效率。

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

相关推荐
GanGanGanGan_3 小时前
RustDesk 安装指南 — Rocky Linux 9 + XFCE X11
linux·运维·centos
南境十里·墨染春水7 小时前
linux学习笔记 网络编程——Socket入门与TCP客户端/服务器实现
linux·服务器·网络
Yupureki8 小时前
《Linux网络编程》6.UDP原理
linux·运维·服务器·网络·udp
楼田莉子8 小时前
Linux网络:NAT_代理
linux·运维·服务器·开发语言·c++·后端
烛衔溟9 小时前
TypeScript 索引签名、只读数组与 keyof / typeof 入门
linux·ubuntu·typescript
笨笨饿10 小时前
#79_NOP()嵌入式C语言中内联汇编宏的抽象封装模式研究
linux·c语言·网络·驱动开发·算法·硬件工程·个人开发
fish_xk10 小时前
Linux的权限
linux·运维·服务器
嵌入式×边缘AI:打怪升级日志11 小时前
Linux 驱动与应用开发核心自测题库(面试官问答完整版)
linux·运维·php
薛定谔的悦13 小时前
储能充放电状态机执行逻辑详解
linux·数据库·能源·储能·bms
嵌入式×边缘AI:打怪升级日志14 小时前
Tina SDK Linux Kernel 基本使用(实战篇:为7寸RGB LCD触摸屏添加驱动支持).md
linux·运维·服务器