Docker如何在已经构建好的镜像中安装包(核心思路)

 更新时间:2025年10月19日 13:49:30   作者:NLP的小Y  
给已经构建好的 Docker 镜像安装软件包,主要有两种核心思路:一种是基于原有镜像构建一个新镜像,另一种是临时进入容器进行安装,本文给大家详细介绍Docker如何在已经构建好的镜像中安装包,感兴趣的朋友一起看看吧

核心思路

给已经构建好的 Docker 镜像安装软件包,主要有两种核心思路:一种是基于原有镜像构建一个新镜像,另一种是临时进入容器进行安装。

方法一:使用Dockerfile构建新镜像(推荐)

这是最符合Docker最佳实践的方法,具有可重复性、易于版本管理。

  1. 准备Dockerfile:在一个空目录中,创建一个名为 Dockerfile 的文件。假设你原有的镜像名为 my-existing-image:tag。
# 使用你已有的镜像作为基础
FROM my-existing-image:tag
# 安装你需要的软件包,这里以安装vim和curl为例
# 如果基础镜像基于Ubuntu/Debian
RUN apt-get update && apt-get install -y \
    vim \
    curl \
    && rm -rf /var/lib/apt/lists/*
# 如果基础镜像基于CentOS/RHEL/AlmaLinux
# RUN yum update -y && yum install -y \
#    vim \
#    curl \
#    && yum clean all

请注意:需要根据基础镜像使用的Linux发行版,选用正确的包管理命令(如apt-get或yum)。

  1. 构建新镜像:打开终端,进入包含Dockerfile的目录,执行构建命令。
docker build -t my-new-image:with-vim .

命令末尾的 . 表示使用当前目录下的Dockerfile。-t 参数为新镜像打上标签。

  1. 使用新镜像:构建完成后,就可以像使用其他镜像一样使用这个新的镜像了。
docker run -it my-new-image:with-vim

方法二:进入运行中的容器临时安装

这种方法非常适合快速测试和调试,但改动通常是临时的。

  1. 启动并进入容器:如果你的容器还未运行,首先启动它。使用 docker exec 命令进入一个正在运行的容器。
# 启动容器(如果未运行)
docker run -it --name my-container my-existing-image:tag bash
# 或者进入一个已在运行的容器
docker exec -it my-container bash

-it 参数为你提供一个交互式的终端。

  1. 在容器内安装包:进入容器后,你就可以像在一台普通的Linux机器上一样安装软件包了。
# 在基于Ubuntu/Debian的容器内
apt-get update
apt-get install -y vim
# 在基于CentOS/RHEL的容器内
yum update -y
yum install -y vim
  1. (可选)提交更改以保存为新镜像:如果你希望将这次临时安装的改动永久保存下来,可以将其提交为一个新的镜像。
docker commit my-container my-saved-image:with-changes

之后,就可以通过 my-saved-image:with-changes 这个新镜像来启动一个包含所有已安装包的容器了。

到此这篇关于Docker如何在已经构建好的镜像中安装包(核心思路)的文章就介绍到这了,更多相关docker构建好的镜像中安装包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker安装ElasticSearch:7.8.0集群的详细教程

    docker安装ElasticSearch:7.8.0集群的详细教程

    这篇文章主要介绍了docker安装ElasticSearch:7.8.0集群的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Docker容器应用日志查看方法

    Docker容器应用日志查看方法

    今天小编就为大家分享一篇关于Docker容器应用日志查看方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • docker commit与export区别小结

    docker commit与export区别小结

    本文主要介绍了docker commit与export区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-12-12
  • docker利用nextcloud搭建一个私有百度云盘

    docker利用nextcloud搭建一个私有百度云盘

    这篇文章主要介绍了docker利用nextcloud搭建一个私有百度云盘,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 在Docker中利用Tomcat快速部署web应用的方法示例

    在Docker中利用Tomcat快速部署web应用的方法示例

    这篇文章我们就来说一下怎么在docker中快速部署一个web应用。文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • docker中run和exec有什么区别示例详解

    docker中run和exec有什么区别示例详解

    这篇文章主要介绍了docker中run和exec有什么区别的相关资料,docker run`用于创建并启动新容器,而docker exec用于在已运行容器中执行命令,前者适用于启动新服务,后者适用于调试和管理运行中的容器,需要的朋友可以参考下
    2025-03-03
  • Docker Compose环境变量与配置文件管理全解析

    Docker Compose环境变量与配置文件管理全解析

    这篇文章主要介绍了Docker Compose环境变量与配置文件管理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-04-04
  • Docker容器时区调整操作

    Docker容器时区调整操作

    这篇文章主要介绍了Docker容器时区调整操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 使用Docker安装SonarQube的详细教程

    使用Docker安装SonarQube的详细教程

    这篇文章主要介绍了Docker安装SonarQube的教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • 使用Docker打包和运行Java镜像的完整指南

    使用Docker打包和运行Java镜像的完整指南

    在这篇文章中,我们将详细讲解如何使用Docker打包和运行一个Java应用镜像,通过此教程,即使你是一个小白,也能轻松学会如何构建Docker镜像并运行Java应用,感兴趣的小伙伴跟着小编一起来看看吧
    2025-01-01

最新评论