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

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

相关推荐
涛ing24 分钟前
32. C 语言 安全函数( _s 尾缀)
linux·c语言·c++·vscode·算法·安全·vim
__雨夜星辰__26 分钟前
Linux 学习笔记__Day2
linux·服务器·笔记·学习·centos 7
大耳朵土土垚27 分钟前
【Linux】日志设计模式与实现
linux·运维·设计模式
bohu834 小时前
亚博microros小车-原生ubuntu支持系列:16 机器人状态估计
ubuntu·机器人·imu·localization·microros·imu_tools
深度Linux6 小时前
Linux网络编程中的零拷贝:提升性能的秘密武器
linux·linux内核·零拷贝技术
杨浦老苏7 小时前
开源音乐管理软件Melody
docker·群晖·多媒体
杨浦老苏9 小时前
面向npm的实时仪表板Dashly
网络·docker·群晖·导航
chian-ocean9 小时前
从理论到实践:Linux 进程替换与 exec 系列函数
linux·运维·服务器
拎得清n9 小时前
UDP编程
linux
敖行客 Allthinker10 小时前
从 UTC 日期时间字符串获取 Unix 时间戳:C 和 C++ 中的挑战与解决方案
linux·运维·服务器·c++