news 2026/4/24 23:11:06

Docker 容器中修改 root 密码的正确方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker 容器中修改 root 密码的正确方法

在使用 Docker 容器时,有时我们需要在容器创建后动态修改其中用户的密码,尤其是root用户的密码。很多人尝试使用docker exec命令直接执行chpasswd,但常常因为命令格式或 shell 解析问题导致密码未成功更新。本文将详细介绍如何正确使用docker exec修改容器内 root 密码,并提供多个可复用的示例。


一、背景说明

在构建镜像时,我们通常会在Dockerfile中设置初始密码,例如:

RUN echo "root:root" | chpasswd

但当容器已经运行起来后,如果需要临时或动态修改密码(比如出于安全考虑),就不能再修改Dockerfile了。此时,我们需要借助docker exec命令进入容器执行密码修改操作。


二、常见错误写法

很多初学者会这样写:

dockerexec-it centos7.5 root:newpassword|chpasswd

这是错误的!

原因:

  • docker exec后面必须指定要执行的命令(如/bin/bashchpasswd)。
  • 上述命令试图在宿主机上执行chpasswd,而不是在容器内部。
  • 管道|在 shell 中由宿主机解析,不会传递到容器内。

三、正确做法:使用/bin/bash -c包裹命令

✅ 方法 1:使用chpasswd批量修改(推荐)

dockerexec-it centos7-novnc2 /bin/bash -c"echo 'root:123456' | chpasswd"

注意:这里使用单引号包裹root:123456,避免双引号在 shell 中被提前解析。

如果你希望看到执行成功的提示,可以加上&& echo 'success'

dockerexec-it centos7-novnc2 /bin/bash -c"echo 'root:123456' | chpasswd && echo 'success'"

✅ 方法 2:使用passwd命令(需交互式输入,不推荐用于脚本)

dockerexec-i c0d /bin/bash -c"passwd root"

⚠️ 注意:

  • -i表示保持 STDIN 打开(即使没有-t)。
  • 此方式会进入交互式密码输入,不适合自动化脚本
  • 如果你在脚本中使用,建议改用chpasswd

四、完整示例

假设你有一个名为my-centos的正在运行的 CentOS 容器:

# 修改 root 密码为 MyNewPass123!dockerexec-it my-centos /bin/bash -c"echo 'root:MyNewPass123!' | chpasswd"# 验证是否成功(可选)dockerexec-it my-centos /bin/bash -c"grep root /etc/shadow"

💡 提示:/etc/shadow中 root 行的第二字段不应是!*,否则表示密码被锁定。


五、注意事项

  1. 引号嵌套问题
    外层用双引号时,内部字符串建议用单引号,避免 shell 转义混乱:

    # 正确"echo 'root:pass' | chpasswd"# 错误(可能报错)"echo "root:pass" | chpasswd"
  2. 容器必须安装chpasswd
    大多数基于centosubuntu的镜像默认包含chpasswd。若使用极简镜像(如alpine),需先安装shadow包。

  3. 安全性提醒
    密码明文出现在命令行中,可能会被history记录。生产环境中建议:

    • 使用环境变量传入密码
    • 或通过挂载加密文件的方式处理

六、总结

方法是否推荐适用场景
echo 'user:pass' | chpasswd✅ 强烈推荐自动化、脚本、批量修改
passwd username⚠️ 谨慎使用临时手动调试

记住核心语法

dockerexec-it<容器名>/bin/bash -c"echo '用户名:新密码' | chpasswd"

✅ 按照上述方法操作,即可成功在已运行的 Docker 容器中修改 root 或其他用户的密码!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 23:10:28

Llama3-8B指令微调教程:Alpaca格式一键启动,快速定制任务

Llama3-8B指令微调教程&#xff1a;Alpaca格式一键启动&#xff0c;快速定制任务 1. 为什么选Llama3-8B做指令微调&#xff1f; 你是不是也遇到过这些情况&#xff1a;想让大模型听懂你的业务指令&#xff0c;但发现开源模型默认只“会聊天”&#xff0c;不会执行你写的流程&…

作者头像 李华
网站建设 2026/4/23 18:39:35

NHSE开源工具功能探索与实践指南

NHSE开源工具功能探索与实践指南 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE 在游戏存档修改领域&#xff0c;玩家常面临两大核心挑战&#xff1a;一方面&#xff0c;游戏内资源收集的时间成本…

作者头像 李华
网站建设 2026/4/19 8:02:35

做二手物品估价小程序,输入物品品类,使用时长,新旧程度,参考同平台二手成交数据,自动给出合理报价区间,标注定价技巧。

1. 实际应用场景描述在闲鱼、转转等二手交易平台上&#xff0c;卖家常常面临如何定价的问题&#xff1a;- 定价过高&#xff0c;无人问津&#xff1b;- 定价过低&#xff0c;损失利润。卖家需要参考同类商品的近期成交价&#xff0c;结合物品的品类、使用时长、新旧程度来估算合…

作者头像 李华
网站建设 2026/4/21 14:17:26

在OpenAI“创新已经变得困难”!离职高管深喉爆料

在OpenAI“创新已经变得困难”&#xff01;离职高管深喉爆料 原创 陈骏达 智东西 2026年1月23日 19:37 北京 刚离职的副总裁&#xff0c;把OpenAI的创新困境一股脑全曝光了。 编译 | 陈骏达 编辑 | Panken 智东西1月23日消息&#xff0c;昨天&#xff0c;由知名媒体人和作…

作者头像 李华
网站建设 2026/4/18 23:47:42

5大核心价值助力Switch存档修改:动物森友会游戏体验优化指南

5大核心价值助力Switch存档修改&#xff1a;动物森友会游戏体验优化指南 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE 你是否曾为《动物森友会&#xff1a;新地平线》中漫长的资源收集过程感到沮…

作者头像 李华
网站建设 2026/4/21 18:21:44

2025多仓配置接口在企业ERP系统中的实战应用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个企业ERP系统中的多仓配置接口&#xff0c;要求&#xff1a;1. 支持跨仓库库存查询和调拨&#xff1b;2. 实现库存预警功能&#xff1b;3. 提供数据统计和分析接口&#xf…

作者头像 李华