自动生成的目录怎么不对(Docker翻车实录:一个参数问题,坑了我半天……)

Docker翻车实录:一个参数成绩,坑了我半天……

一、背景

新上线一个批处理功效,基于Docker公布的。上线之后显现一个成绩,Docker批处理天生的文件目次,别的使用步骤无法拜候。

之前也在使用Docker,但并未触及到文件共享的成绩,还真没注意到。颠末一系列排查,终于找到缘故。这篇文章就纪录一下排查历程中使用到的武艺点,也帮各位重温一下。

触及的知识点:Docker help下令、Linux用户/组id查察、Docker用户指定、Docker启动失败日志查察等

二、征象分析

Docker运转的项目定时创建文件目次并举行文件天生等利用,但当其他使用步骤来利用Docker使用天生的目次时,会提示“Permission denied”错误。

查察Docker天生的文件夹权限,居然是以root用户创建的。实行Docker的启动脚老实明是平凡用户,天生的文件怎样就变成了root用户了?

这里就触及到经过Docker实行实行时所使用的用户了。假如在实行Docker实行下令时,未指定所使用的用户,默许以root用户实行。在这消费情况下固然是不允许的了。

三、成绩处理

既然找到成绩的缘故处理起来就比力容易了,底下纪录一下处理成绩及触及到的一些Docker下令和Linux利用。

1、查询协助文档

先来经过help下令查察一下Docker的下令参数,怎样来指定实行下令的用户。

先实验了docker --help下令,后果并未找到指定用户的下令参数:

$ sudo docker --help Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Options: --config string Location of client config files (default "/root/.docker") -c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use") -D, --debug Enable debug mode -H, --host list Daemon socket(s) to connect to -l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info") --tls Use TLS; implied by --tlsverify --tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem") --tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem") --tlskey string Path to TLS key file (default "/root/.docker/key.pem") --tlsverify Use TLS and verify the remote -v, --version Print version information and quit

厥后才熟悉到,查找的应该是docker的run下令的协助文档:

$ sudo docker run --help ... -u, --user string Username or UID (format:

GM游戏 更多