背景介绍新的批处理功能上线,基于Docker的release。上线后出现Docker批处理生成的文件目录无法被其他应用访问的问题。之前一直在用Docker,但是没有涉及到文件共享,所以还真没注意。经过一系列的调查,终于找到了原因。本文将记录调查过程中用到的技术要点,同时也帮助大家复习。涉及知识点:Docker帮助命令、Linux用户/组id查看、Docker用户指定、Docker启动失败日志查看等现象分析Docker运行项目定时创建文件目录并执行文件生成等操作,但是当其他应用操作时Docker应用生成的目录,将显示“Permissiondenied”错误。查看Docker生成的文件夹权限,是root用户创建的。执行Docker启动脚本明明是普通用户,那为什么生成的文件变成了root用户呢?这涉及到通过Docker执行执行时使用的用户。如果执行Docker命令时没有指定用户,则默认以root用户执行。当然在这个生产环境中是不允许的。问题解决由于更容易找到问题原因,所以记录下问题解决和涉及到的一些Docker命令和Linux操作。查询帮助文档首先我们通过help命令查看Docker的命令参数,以及如何指定执行命令的用户。先尝试docker--help命令,结果并没有找到指定用户的命令参数:$sudodocker--helpUsage:docker[OPTIONS]COMMANDAself-sufficientruntimeforcontainerOptions:--configstringLocationofclientconfigfiles(default"/root/.docker")-c,--contextstring用于连接到守护进程的上下文的名称(覆盖DOCKER_HOSTenvvar和使用“dockercontextuse”设置的默认上下文)-D,--debug启用调试模式-H,--hostlistDaemonsocket(s)toconnectto-l,--log-levelstring设置日志级别("debug"|"info"|"warn"|"error"|"fatal")(默认"info")--tls使用TLS;--tlsverify隐含--tlscacertstring仅由该CA签名的信任证书(默认为“/root/.docker/ca.pem”)--tlscertstringTLS证书文件的路径(默认为“/root/.docker/cert.pem")--tlskey字符串TLS密钥文件的路径(默认为“/root/.docker/key.pem”)--tlsverify使用TLS并验证remote-v,--version打印版本信息并退出后来才知道找的应该是docker的run命令的帮助文档:$sudodockerrun--help...-u,--userstring用户名orUID(format:
