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

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

相关推荐
风笙978几秒前
[文件系统]文件系统挂载与卸载详解
linux
GeW14 分钟前
新质生产力路线图解读:数据库性能优化与Linux调优专场
linux·数据库
java_logo22 分钟前
Docker 部署 EmulatorJS:轻松搭建浏览器复古游戏平台
游戏·docker·容器·复古游戏·轩辕镜像·emulatorjs·红白机
陈希1232 小时前
Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位
linux·服务器·网络
方便面不加香菜3 小时前
Docker Container --容器及容器的操作案例详解
运维·docker·容器
测试界的小码农5 小时前
【Linux 命令实战(03):文件创建、复制、移动与删除,掌握 touch、mkdir、cp、mv、rm】
linux·服务器·php
byte轻骑兵6 小时前
实战 1:修改 BlueZ 源码,添加自定义开机日志
linux·aiot·bluez·电脑蓝牙·嵌入式蓝牙
叼烟扛炮6 小时前
Linux 学习笔记(五十):网络层——IP 协议、子网划分与 NAT 魔法
linux·笔记·学习
叼烟扛炮6 小时前
Linux 学习笔记(六十):单线程的逆袭——epoll 高并发服务器实战
linux·服务器·网络·笔记·学习·算法
AR-26710-6 小时前
Linux Day32——实操五类资源告急排查
linux·运维