在这个教程中,我们将通过一个简单的例子来展示如何使用 Docker 和 atmoz/sftp
镜像设置一个基本的 SFTP 服务。这个服务将允许用户通过 SFTP 安全地访问和管理文件。我们将配置一个名为 ops
的用户,其密码为 123456
,并限定用户只能访问特定的目录。
步骤 1: 准备数据目录
首先,确保你在宿主机上有一个目录用于存放通过 SFTP 服务访问的文件。我们将使用 /mnt/d/local_dir
作为示例。如果这个目录不存在,请先创建它:
sudo mkdir -p /mnt/d/local_dir
sudo chown -R 1001:1001 /mnt/d/local_dir
sudo chmod -R 755 /mnt/d/local_dir
这些命令会创建目录,并设置适当的所有权和权限,确保 UID 1001(我们将为 SFTP 用户 ops
使用的 UID)可以访问和修改这个目录。
步骤 2: 运行 Docker 容器
使用下面的 docker run
命令来启动你的 SFTP 容器:
docker run --name sftp-ops -d -p 2222:22 -v /mnt/d/local_dir:/home/ops/data atmoz/sftp ops:123456:1001:::data
这个命令的各个部分意义如下:
--name sftp-ops
:为容器设置一个名称,这里我们命名为sftp-ops
。-d
:以守护进程模式运行 Docker 容器。-p 2222:22
:将容器的 22 端口映射到宿主机的 2222 端口,这样你可以通过宿主机的 2222 端口连接 SFTP 服务。-v /mnt/d/local_dir:/home/ops/data
:将宿主机的/mnt/d/local_dir
目录挂载到容器的/home/ops/data
目录。这使得在 SFTP 中可见的data
目录对应于宿主机的/mnt/d/local_dir
目录。atmoz/sftp
:使用的 Docker 镜像。ops:123456:1001:::data
:配置 SFTP 用户的参数。
步骤 3: 连接到 SFTP 服务
一旦容器运行,你可以使用任何支持 SFTP 的客户端软件(如 FileZilla、WinSCP 或命令行的 sftp
工具)来连接。例如,使用命令行的 sftp
工具,你可以这样连接:
sftp -P 2222 ops@localhost
然后输入密码 123456
进行登录。