怎样在docker容器中安装软件?apt-get和yum命令如何使用?

发布时间 - 2025-06-05 00:00:00    点击率:

在docker容器中安装软件需先确认系统类型并选择对应包管理工具。一、确认系统类型以选择apt-get(debian/ubuntu)、yum(centos/rhel)或apk(alpine),可通过cat /etc/os-release查看;二、使用apt-get时应先执行apt-get update再安装软件,加-y参数自动确认,并清理缓存以减小镜像体积;三、使用yum安装时同样加-y参数,一般无需手动更新源,旧镜像可能需启用epel源;四、dockerfile中建议合并多条命令为一行以减少图层数量,如用apt的run apt-get update && apt-get install -y curl git && apt-get clean && rm -rf /var/lib/apt/lists/* 或用yum的run yum install -y nginx && yum clean all。

在 Docker 容器中安装软件其实和在普通 Linux 系统里差不多,区别主要是你得先确认容器用的是哪种系统(比如 Debian/Ubuntu 还是 CentOS/Alpine),然后才能决定该用 apt-getyum 还是别的包管理工具。关键点就是:选对命令,注意更新源,尽量精简操作步骤


一、确认容器使用的操作系统类型

不同系统的包管理器不一样,这是最基础也是最容易忽略的一点:

  • Debian / Ubuntu 系列使用 apt-getapt
  • CentOS / RHEL 系列使用 yum
  • Alpine Linux 使用 apk

你可以通过运行 cat /etc/os-release 来查看当前容器的操作系统信息。如果不确定,也可以从镜像名大致判断,比如 nginx:alpine 就是 Alpine 系统,centos:7 当然是用的 yum。


二、使用 apt-get 安装软件的正确方式

如果你是在基于 Debian 的容器里(比如 ubuntu、debian、node 等官方镜像),那就用 apt-get

常见写法如下:

apt-get update && apt-get install -y 包名

几点建议:

  • 每次安装前都要先执行 apt-get update,否则可能找不到包。

  • -y 参数是为了自动确认,避免交互式提示中断构建过程。

  • 安装完记得清理缓存(尤其是写 Dockerfile 的时候):

    apt-get clean && rm -rf /var/lib/apt/lists/*

举个例子,你想安装 curl 和 net-tools:

apt-get update && apt-get install -y curl net-tools

三、使用 yum 安装软件的注意事项

对于 CentOS 或 RHEL 系列的容器,用的就是 yum

yum install -y 包名

同样建议加上 -y 自动确认。但不像 apt 那样需要频繁更新源(默认会自动检查),所以一般不需要手动执行 yum makecache,除非你修改了源配置。

例如安装 telnet 和 vim:

yum install -y telnet vim

需要注意的是,有些旧版本的镜像可能没有 vim,只能用 vi,或者要额外启用 EPEL 源才能安装某些包。


四、Dockerfile 中安装软件的小技巧

在写 Dockerfile 时,推荐把多个安装命令合并成一行,这样可以减少图层数量,减小最终镜像体积:

比如用 apt 的:

RUN apt-get update && \
    apt-get install -y curl git && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

用 yum 的:

RUN yum install -y nginx && \
    yum clean all

这样不仅效率高,还能避免缓存残留影响后续构建。


基本上就这些。用对命令,注意系统类型,再加上一点优化技巧,就能在容器里顺利安装你需要的软件了。


# linux  # centos  # git  # docker  # nginx  # 操作系统  # 工具  # 区别  # cURL  # var  # vim  # ubuntu  # debian  # 镜像  # 新源  # 的是  # 图层  # 如用  # 这是  # 如果你  # 是在  # 容器里 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用PHP快速搭建高效网站?分步指南  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  如何快速搭建安全的FTP站点?  如何做网站制作流程,*游戏网站怎么搭建?  深圳网站制作的公司有哪些,dido官方网站?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  微信小程序 闭包写法详细介绍  如何用腾讯建站主机快速创建免费网站?  如何获取免费开源的自助建站系统源码?  如何快速搭建二级域名独立网站?  Android滚轮选择时间控件使用详解  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  如何快速生成可下载的建站源码工具?  5种Android数据存储方式汇总  微信公众帐号开发教程之图文消息全攻略  如何在Tomcat中配置并部署网站项目?  Laravel如何与Pusher实现实时通信?(WebSocket示例)  EditPlus中的正则表达式实战(5)  用v-html解决Vue.js渲染中html标签不被解析的问题  如何快速配置高效服务器建站软件?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  免费网站制作appp,免费制作app哪个平台好?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  html如何与html链接_实现多个HTML页面互相链接【互相】  🚀拖拽式CMS建站能否实现高效与个性化并存?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  JavaScript实现Fly Bird小游戏  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  php json中文编码为null的解决办法  WordPress 子目录安装中正确处理脚本路径的完整指南  如何在Ubuntu系统下快速搭建WordPress个人网站?  Laravel如何使用Service Container和依赖注入?(代码示例)  昵图网官方站入口 昵图网素材图库官网入口  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  javascript读取文本节点方法小结  MySQL查询结果复制到新表的方法(更新、插入)  Laravel Session怎么存储_Laravel Session驱动配置详解  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  打开php文件提示内存不足_怎么调整php内存限制【解决方案】