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 如何在阿尔卑斯集装箱内安装SSHFS?_Docker_Alpine_Sshfs - Fatal编程技术网

Docker 如何在阿尔卑斯集装箱内安装SSHFS?

Docker 如何在阿尔卑斯集装箱内安装SSHFS?,docker,alpine,sshfs,Docker,Alpine,Sshfs,我使用php:7.3.2-cli-alpine3.9作为基本映像。我还需要在容器中安装SSHFS,因为我使用的PHP库依赖于它。我知道有很多关于“如果你在容器内安装SSHFS,你就错了”的答案,但在我的情况下,我需要这个软件安装在容器内,而不是主机上 在我的Dockerfile中,我有 运行apk更新和apk添加sshfs 执行此命令时不会出现错误: fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.

我使用
php:7.3.2-cli-alpine3.9
作为基本映像。我还需要在容器中安装SSHFS,因为我使用的PHP库依赖于它。我知道有很多关于“如果你在容器内安装SSHFS,你就错了”的答案,但在我的情况下,我需要这个软件安装在容器内,而不是主机上

在我的Dockerfile中,我有

运行apk更新和apk添加sshfs

执行此命令时不会出现错误:

fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
v3.9.3-21-g265a28802e [http://dl-cdn.alpinelinux.org/alpine/v3.9/main]
v3.9.3-15-g583c0d55e9 [http://dl-cdn.alpinelinux.org/alpine/v3.9/community]
OK: 9764 distinct packages available
(1/12) Installing openssh-keygen (7.9_p1-r4)
(2/12) Installing openssh-client (7.9_p1-r4)
(3/12) Installing fuse-common (3.2.6-r1)
(4/12) Installing fuse3 (3.2.6-r1)
(5/12) Installing libffi (3.2.1-r6)
(6/12) Installing libintl (0.19.8.1-r4)
(7/12) Installing libuuid (2.33-r0)
(8/12) Installing libblkid (2.33-r0)
(9/12) Installing libmount (2.33-r0)
(10/12) Installing pcre (8.42-r1)
(11/12) Installing glib (2.58.1-r2)
(12/12) Installing sshfs (3.5.1-r0)
Executing busybox-1.29.3-r10.trigger
Executing glib-2.58.1-r2.trigger
OK: 25 MiB in 44 packages
但当我试图挂载远程主机时

'/usr/bin/sshfs'-C-o重新连接-o'Port=22'-o'UserKnownHostsFile=/ssh/known_hosts'-o StrictHostKeyChecking=yes-o'IdentityFile=/ssh/'-o PasswordAuthentication=no'@://'/fuse/'

我得到:

fuse:找不到设备,请先尝试“modprobe fuse”

当我运行它时,我得到:

modprobe:无法将目录更改为“/lib/modules”:没有这样的文件或目录

我丢了包裹吗?还需要安装什么


谢谢。

为了在容器内运行SSHFS,它需要特权权限

通过在Dockerfile中添加此行来安装SSHFS:
运行apk更新和apk添加sshfs

运行容器:
docker run--privileged=true-it--rm--name alpine app transfers image

在安装sshfs包之前,您是否尝试过创建该目录(在dockerfile中)?甚至在安装后创建它,只是为了看看它在安装后是否工作。你不能从Docker容器中加载内核模块。在Docker外部加载相关模块可能成功,也可能失败;或者在具有自己内核(已知版本)的VM中运行工作负载可能会起作用。@Scrambo我确实尝试过,但它没有像我预期的那样起作用。问题不在于缺少目录,而在于目录中缺少了什么。@DavidMaze谢谢,您能再详细说明一下吗?我只对集装箱内工作的SSHFS感兴趣。它依赖于内核模块,但当Docker“代理”主机的内核时,其他软件也会这样做。这是不是只有阿尔卑斯山相关的问题和centos/ubuntu镜像才能工作?