![从远程机器访问托管 SFTP 的 Docker 容器](https://linux22.com/image/780613/%E4%BB%8E%E8%BF%9C%E7%A8%8B%E6%9C%BA%E5%99%A8%E8%AE%BF%E9%97%AE%E6%89%98%E7%AE%A1%20SFTP%20%E7%9A%84%20Docker%20%E5%AE%B9%E5%99%A8.png)
我安装了一个新的 Ubuntu,运行 Docker,我想用它来托管 SFTP 服务器。我可以从本地计算机访问 SFTP 服务器,但不能在本地网络内访问。
我的docker-compose.yml
文件如下:
version: "2.3"
services:
sftp:
image: atmoz/sftp
ports:
- "2222:22"
command: foo:pass:1001
networks:
- turreta_network
volumes:
- "/home/my-name/20220926-ftp/demo-dir:/home/foo/upload"
networks:
turreta_network:
driver: bridge
然后我运行以下命令来启动服务器。
docker-compose pull
docker-compose up
然后我可以使用以下方式通过 SFTP 进入本地机器上的容器:
sftp -P 2222 [email protected]
sftp -P 2222 foo@[MY_IP]
但是,当我尝试通过 IP 地址从网络上的另一台计算机访问 SFTP 服务器时,失败并出现以下错误:
ssh: connect to host [IP ADDRESS] port 2222: Connection timed out
Connection closed
我已经使用 UFW 打开了端口 2222,您可以看到它允许使用以下命令传入和传出数据ufw status verbose
:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
2222 ALLOW IN Anywhere
2222 (v6) ALLOW IN Anywhere (v6)
2222 ALLOW OUT Anywhere
2222 (v6) ALLOW OUT Anywhere (v6)
我知道我的路由器没有(直接)问题,因为我在机器上启动了一个快速本地 .net 服务器 ( dotnet new webapp
) 并运行它。我能够从远程机器上运行的浏览器访问 dotnet 服务器,所以我知道我的端口没有问题。:
sudo dotnet run . -urls http://[IPADDRESS]:2222
除此之外,我还必须运行它,
sudo
这让我很惊讶。
有人知道发生了什么事或可以提供帮助吗?
可能的相关问题
我不知道这是否是一个相关的问题,但我无法停止在我的机器上运行容器。
如果我跑步docker stop <container-id>
我会得到:
Error response from daemon: cannot stop container: <container_id>: permission denied
我必须通过附加到正在运行的容器并kill
从容器内部发出命令来停止运行容器。
答案1
我要回答我自己的问题。
由于上述情况,我怀疑该盒子存在一些配置问题Possible Related Issue
。
我只好在盒子上重新安装 Ubuntu,然后重新启动。重新安装的盒子工作正常。
我不确定“Pave your computer”是否是一个可以接受的答案,但是对我来说它很有用:)