在将非root用户添加到sudoers组的映像构建期间无法创建文件夹。这是我的Dockerfile:
$launchsitesatellite = DB::table('satellites')
->where(function($q) use ($request) {
if(empty($request->type) && empty($request->rocket_type)) {
$q->orWhere('satname','LIKE','%'.$request->search.'%')
->orWhere('norad_cat_id','LIKE','%'.$request->search.'%')
->orWhere('country','LIKE','%'.$request->search.'%')
->orWhere('object_id','LIKE','%'.$request->search.'%');
} else {
if(!empty($request->type)) { // If the type is specified, use it
$q->orWhere($request->type,'LIKE','%'.$request->search.'%');
}
if(!empty($request->rocket_type)) { // If the rocket_type is specified, use it
$q->orWhere('rocket_type','LIKE','%'.$request->rocket_type.'%');
}
}
})
->where('site', $site_code)->get();
我收到错误:FROM ubuntu:16.04
RUN apt-get update && \
apt-get -y install sudo
RUN adduser --disabled-password --gecos '' newuser \
&& adduser newuser sudo \
&& echo '%sudo ALL=(ALL:ALL) ALL' >> /etc/sudoers
USER newuser
RUN mkdir -p /newfolder
WORKDIR /newfolder
答案 0 :(得分:21)
Docker容器中的文件系统就像Docker容器外的filesytem一样:如果要创建文件或目录,则需要适当的权限。在这种情况下,您尝试以非root用户身份创建/newfolder
(因为USER
指令更改了用于运行其后任何命令的UID)。这不起作用,因为/
归root
所有并且模式为dr-xr-xr-x
。
尝试改为:
RUN mkdir -p /newfolder
RUN chown newuser /newfolder
USER newuser
WORKDIR /newfolder
这将创建目录root
,然后chown
。
答案 1 :(得分:2)
这是一个对我有用的过程,用于创建具有非用户权限的文件夹
FROM solr:8
USER root
RUN mkdir /searchVolume
RUN chown solr:solr /searchVolume
USER solr
最后一行将登录名返回到 solr(或您拥有的任何用户)。
答案 2 :(得分:0)
docker cp some_dir mysql:/opt
不是创建目录,而是使用docker cp将空目录或文件复制到容器中的该路径。
答案 3 :(得分:0)
在创建 [root] 用户并完成 xyz 后,我实际上遇到了这个问题。当我去重新构建我的 docker(即使是强制重新创建)时,它给了我各种权限被拒绝的错误。安全性对我来说不是问题,所以只需添加
FROM ubuntu:latest
USER root
ENV TZ=Europe/Kiev
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update && apt-get install...
然后做我的新用户代码
RUN useradd...
我知道这不是完美的答案,但我希望它有所帮助!