WisdomSSH解决docker run命令中log-opt参数不支持导致的容器创建失败问题

在使用 docker run 命令部署一个名为 autman 的应用时,我遇到了容器无法正常启动的问题。起初,我尝试执行如下命令:

bash 复制代码
docker run -d --name autman --restart always -p 8080:8080 -p 8081:8081 -v /root/autman:/autMan --log-opt max-size=10m --log-opt max-file=3 docker.1ms.run/hdbjlizhe/autman:latest

然而,执行后返回了错误信息:

复制代码
docker: Error response from daemon: unknown log opt 'max-file' for journald log driver

这表明当前 Docker 环境所使用的日志驱动(journald)并不支持 max-file 这个选项。随后,我尝试移除该参数,但新的错误随之出现:

复制代码
docker: Error response from daemon: unknown log opt 'max-size' for journald log driver

此时,我意识到 --log-opt 参数可能与当前系统日志驱动不兼容。由于 journald 是 systemd 管理的默认日志驱动,其本身不支持 max-size 与 max-file 这类基于文件大小和数量的日志轮转控制。

为了确认这一判断,我检查了系统日志驱动配置。通过运行 docker info | grep -i logging 可以发现,日志驱动确实为 journald,因此 --log-opt 中指定的参数无法生效。

在排除了日志选项的干扰后,我继续排查其他潜在问题。再次执行相同命令时,出现了新的报错:

复制代码
docker: Error response from daemon: Conflict. The container name "/autman" is already in use by container "fab740542af72c0071a9d57af193e50ac23e104af8518901028c2157546c46d6". You have to remove (or rename) that container to be able to reuse that name.

该错误明确指出,容器名称 autman 已被占用。这说明此前已存在一个同名容器,尽管它可能处于停止状态,但 Docker 仍不允许重复命名。

为解决此冲突,我采取以下步骤:

  1. 使用 docker stop autman 命令停止正在运行的旧容器;
  2. 使用 docker rm autman 命令删除已存在的容器实例;
  3. 最后重新执行创建命令。

完整执行流程如下:

bash 复制代码
docker stop autman && docker rm autman && docker run -d --name autman --restart always -p 8080:8080 -p 8081:8081 -v /root/autman:/autMan docker.1ms.run/hdbjlizhe/autman:latest

命令成功执行,输出显示新容器已创建并启动,返回容器唯一标识符:892affb0a8750b2ddb712c98d350f27daa8522d3c8b883340e6238b79244a081。

最终,我确认容器已正常运行。通过以下命令验证:

bash 复制代码
docker ps -a | grep autman

输出包含 Up 状态,且 PORTS 显示 8080 和 8081 端口已映射,表明服务已就绪。

综上所述,本次问题的根本原因在于:

  • 当前环境的 journald 日志驱动不支持 --log-opt max-size 与 --log-opt max-file;
  • 容器名称 autman 被先前创建的容器占用,导致命名冲突。

解决方案是:移除不兼容的日志选项,并清除同名容器后重试。整个过程通过逐步排查、定位、修复,最终实现容器成功部署。

相关推荐
临期冰淇淋5 分钟前
MTK平台 安卓16 GMS报错修改
android·java·前端
人道领域6 分钟前
【面试八股速通篇01】锁与并发工具
java·开发语言·面试·c#
Wang's Blog7 分钟前
Java 项目实战: 交友项目 - Dubbo 入门案例全流程复盘
java·dubbo·交友
池佳齐15 分钟前
【软考高级架构师案例】容器化改造:Docker + K8s,如何用云原生视角重构传统多层架构?
docker·云原生·kubernetes
zh731422 分钟前
Docker Desktop on Windows 挂载问题根因分析
windows·docker·容器
小七在进步30 分钟前
初识C++中的模板
java·开发语言·c++
Wang's Blog32 分钟前
Java 项目实战: 交友项目 - SpringCloud 整合 Dubbo 的需求分析与模块规划
java·spring cloud·交友
哦虎!43 分钟前
【JavaEE】文件操作IO
java
十年Java程序媛1 小时前
Redis 分布式锁 + GZIP 压缩缓存踩坑|高并发缓存真实线上复盘
java·开发语言·spring boot·redis·分布式·缓存·面试
顽疲1 小时前
Java vue 养老系统源码详解:入住核算单 live-check 缴费入账与预交金收据实践
java·vue.js·python·java 养老·springboot 养老·vue养老