Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 如何在ubuntu容器中以非根用户身份运行vsftpd?_Docker_Dockerfile_Chroot_Vsftpd_Docker Run - Fatal编程技术网

Docker 如何在ubuntu容器中以非根用户身份运行vsftpd?

Docker 如何在ubuntu容器中以非根用户身份运行vsftpd?,docker,dockerfile,chroot,vsftpd,docker-run,Docker,Dockerfile,Chroot,Vsftpd,Docker Run,我正在尝试重建以使容器作为非根运行。 我创建了我自己的,你可以在那里找到所有的文件 我在本地构建它: docker build -t bram_ftp:v0.4 . Sending build context to Docker daemon 8.704kB Step 1/17 : FROM ubuntu:latest ---> f643c72bc252 Step 2/17 : RUN apt-get update && apt-get install -y --no-

我正在尝试重建以使容器作为非根运行。 我创建了我自己的,你可以在那里找到所有的文件

我在本地构建它:

docker build -t bram_ftp:v0.4 .
Sending build context to Docker daemon  8.704kB
Step 1/17 : FROM ubuntu:latest
 ---> f643c72bc252
Step 2/17 : RUN apt-get update && apt-get install -y --no-install-recommends vsftpd db-util sudo && apt-get clean
 ---> Using cache
 ---> 8ab5e8a0d3d7
Step 3/17 : RUN useradd -m ftpuser
 ---> Using cache
 ---> 179c738d8a8b
Step 4/17 : ENV FTP_USER admin
 ---> Using cache
 ---> 3f55c42bccda
Step 5/17 : ENV FTP_PASS admin
 ---> Using cache
 ---> a44874a4d54e
Step 6/17 : ENV PASV_ADDRESS=127.0.0.1
 ---> Using cache
 ---> 824c15835a7f
Step 7/17 : COPY vsftpd_virtual /etc/pam.d/
 ---> Using cache
 ---> 5045135bb1ca
Step 8/17 : COPY run-vsftpd.sh /usr/sbin/
 ---> Using cache
 ---> 30bd2be7d610
Step 9/17 : COPY config-vsftpd.sh /usr/sbin/
 ---> Using cache
 ---> 8347833c2f63
Step 10/17 : RUN /usr/sbin/config-vsftpd.sh
 ---> Using cache
 ---> 58237fe9a8be
Step 11/17 : COPY vsftpd.conf /etc/vsftpd/
 ---> Using cache
 ---> 92c9cbc75356
Step 12/17 : RUN chown -R ftpuser:ftpuser /etc/vsftpd/ && chown ftpuser:ftpuser /usr/sbin/*-vsftpd.sh && chmod +x /usr/sbin/*-vsftpd.sh && mkdir -p /var/run/vsftpd/empty
 ---> Running in 91f03e3198df
Removing intermediate container 91f03e3198df
 ---> 94cfaf7209a9
Step 13/17 : VOLUME /home/ftpuser/vsftpd
 ---> Running in cfdf44372c17
Removing intermediate container cfdf44372c17
 ---> 5d7416bd2844
Step 14/17 : VOLUME /var/log/vsftpd
 ---> Running in c2b5121adb49
Removing intermediate container c2b5121adb49
 ---> 620cc085a235
Step 15/17 : EXPOSE 20 21
 ---> Running in f12d22af36cc
Removing intermediate container f12d22af36cc
 ---> 1dd7698c18b3
Step 16/17 : USER ftpuser
 ---> Running in d7a2cdcc3aa1
Removing intermediate container d7a2cdcc3aa1
 ---> 3a88a4a89ac8
Step 17/17 : CMD ["/usr/sbin/run-vsftpd.sh"]
 ---> Running in 86f5dec18f71
Removing intermediate container 86f5dec18f71
 ---> 50fdae730864
Successfully built 50fdae730864
Successfully tagged bram_ftp:v0.4
当我按照自述文件中的描述在本地运行它时,容器只是继续重新启动,我没有看到任何日志/错误。 当我以交互方式(so-it而不是-d)而不是作为守护进程运行容器时,会出现以下错误:

docker run -it -v /tmp/vsftpd:/home/ftpuser/vsftpd \
                                -p 20:20 -p 21:21 -p 47400-47470:47400-47470 \
                                -e FTP_USER=admin \
                                -e FTP_PASS=admin \
                                -e PASV_ADDRESS=127.0.0.1 \
                                --name ftp \
                                --restart=always \bram_ftp:v0.4

500 OOPS: config file not owned by correct user, or not a file
但当我检查容器正在运行的用户和vsftpd.conf权限时,一切似乎都正常:

docker run bram_ftp:v0.4 id                        
uid=1000(ftpuser) gid=1000(ftpuser) groups=1000(ftpuser)

docker run bram_ftp:v0.4 ls -la /etc/vsftpd 
total 28
drwxr-xr-x 1 ftpuser ftpuser  4096 Dec 31 13:12 .
drwxr-xr-x 1 root    root     4096 Dec 31 14:28 ..
-rw-r--r-- 1 ftpuser ftpuser 12288 Dec 31 13:12 virtual_users.db
-rw-r--r-- 1 ftpuser ftpuser    12 Dec 31 13:12 virtual_users.txt
-rw-r--r-- 1 ftpuser ftpuser  1734 Dec 31 13:09 vsftpd.conf
当我像下面这样运行容器时,我可以在没有问题的情况下进入容器:

docker run -it bram_ftp:v0.4 bash                   
ftpuser@5358b2368c55:/$ 
然后手动启动vsftpd:

docker run -it bram_ftp:v0.4 bash                   
ftpuser@5358b2368c55:/$ vsftpd /etc/vsftpd/vsftpd.conf
如果我随后检查容器中正在运行的进程,我会看到:

docker exec 5358b2368c55 ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
ftpuser      1     0  0 14:31 pts/0    00:00:00 bash
ftpuser     10     1  0 14:32 pts/0    00:00:00 vsftpd /etc/vsftpd/vsftpd.conf
ftpuser     11     0  0 14:33 ?        00:00:00 ps -ef
我没有任何vsftpd的经验,所以我不知道我在这里做错了什么。希望有人能帮我