news 2026/6/11 0:06:10

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/6/10 15:56:59

告别复杂配置!用科哥开发的GPEN镜像快速修复模糊人像

告别复杂配置&#xff01;用科哥开发的GPEN镜像快速修复模糊人像 你是否也遇到过这些情况&#xff1a;翻出老照片想发朋友圈&#xff0c;却发现人脸糊得看不清五官&#xff1b;客户发来一张低分辨率证件照&#xff0c;却要求立刻出高清海报&#xff1b;修图软件调了半小时&…

作者头像 李华
网站建设 2026/6/10 15:56:39

基于python的社区流浪动物救助系统vue3

目录系统概述技术架构核心功能扩展性示例代码片段开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 基于Python和Vue3的社区流浪动物救助系统是一个结合后端数据处理与前端交互的全栈…

作者头像 李华
网站建设 2026/6/10 16:04:29

基隆市道路新闢人行道分年分期建設計畫(2025年至2026年)

一、计划背景与核心目标本计划依据《行人交通安全设施条例》制定&#xff0c;实施周期为 2025-2026 年&#xff08;114-115 年&#xff09;&#xff0c;覆盖基隆市 7 个行政区&#xff0c;聚焦 12 公尺以上未设人行道或设施不完善的道路。核心目标是响应 “行人优先交通安全行动…

作者头像 李华
网站建设 2026/6/10 21:29:38

全面解析SEO从零起步的实用技巧与策略

本文旨在为初学者提供关于SEO从零起步的全方位指导。首先&#xff0c;明确理解SEO的基础概念及其必要性&#xff0c;能够帮助新手快速融入这一领域。接下来&#xff0c;将聚焦于关键词研究的重要性&#xff0c;通过合适的工具选择相关关键词&#xff0c;从而为网站优化打下基础…

作者头像 李华
网站建设 2026/6/10 15:47:34

颠覆性系统优化工具:Windows Cleaner终极解决方案

颠覆性系统优化工具&#xff1a;Windows Cleaner终极解决方案 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 系统优化与空间释放正成为现代Windows用户的核心需求…

作者头像 李华
网站建设 2026/6/10 4:10:05

NHSE完全指南:从入门到精通的Switch存档编辑技巧

NHSE完全指南&#xff1a;从入门到精通的Switch存档编辑技巧 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE NHSE&#xff08;Animal Crossing: New Horizons Save Editor&#xff09;是一款专业的…

作者头像 李华