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部署Django应用的示例

    Docker部署Django应用的示例

    这篇文章主要介绍了Docker部署Django应用的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • 解决docker访问外部https数字证书问题

    解决docker访问外部https数字证书问题

    这篇文章主要介绍了docker访问外部https数字证书问题,为了解决证书验证的问题,我们需要在构建 docker 镜像的时候将 ca-certificates 根证书装上,需要的朋友可以参考下
    2022-09-09
  • docker for windows 容器内网通过独立IP直接访问的方法

    docker for windows 容器内网通过独立IP直接访问的方法

    这篇文章主要介绍了docker for windows 容器内网通过独立IP直接访问的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 基于Docker的Mysql主备搭建的实现步骤

    基于Docker的Mysql主备搭建的实现步骤

    本文主要介绍了基于Docker的Mysql主备搭建的实现步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • docker windows10 共享目录挂载失败的解决方案

    docker windows10 共享目录挂载失败的解决方案

    这篇文章主要介绍了docker windows10 共享目录挂载失败的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 详解Ubuntu16.04安装Docker、nvidia-docker的教程

    详解Ubuntu16.04安装Docker、nvidia-docker的教程

    这篇文章主要介绍了详解Ubuntu16.04安装Docker、nvidia-docker的教程,需要的朋友可以参考下
    2019-10-10
  • 把jar包变成docker容器的方法

    把jar包变成docker容器的方法

    在本篇文章里小编给各位分享的是关于把jar包变成docker容器的方法,有需要的朋友们可以学习下。
    2020-03-03
  • docker运行jar包加载外部配置文件方式

    docker运行jar包加载外部配置文件方式

    这篇文章主要介绍了docker运行jar包加载外部配置文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Docker中部署MySQL 5.7并远程连接Navicat的完整指南

    Docker中部署MySQL 5.7并远程连接Navicat的完整指南

    MySQL是最流行的关系型数据库之一,而Docker提供了轻量级、可移植的容器化解决方案,本文将详细介绍如何在CentOS 7上使用Docker部署 MySQL 5.7,并通过Windows上的Navicat进行远程连接,需要的朋友可以参考下
    2025-07-07
  • Docker搭建redis集群教程

    Docker搭建redis集群教程

    使用Docker部署6个Redis容器,配置集群并开放6381/16381端口,测试主从切换与数据迁移,通过增删节点实现扩容缩容,调整槽位分配确保负载均衡
    2025-08-08

最新评论