linux常用命令

创建vsftpd文件夹

1
mkdir vsftpd
  • 检查目录的所有者和权限
1
ls -ld /目标目录

例如:

1
ls -ld /etc
1
drwxr-xr-x 1 root root 4096 Oct 1 12:34 /etc

drwxr-xr-x 表示权限:d 表示目录,rwx 表示所有者权限,r-x 表示组权限,r-x 表示其他用户权限。 root root 表示所有者和组

修改目录权限(谨慎操作)

1
sudo chmod 775 /目标目录

例如:

1
sudo chmod 775 /etc

775 表示所有者有读、写、执行权限,组用户有读、写、执行权限,其他用户有读、执行权限,777 表示: 所有者、组用户和其他用户都有读、写、执行权限。

删除 chroot_list

1
rm -f -r chroot_list

更改文件所有者

使用以下命令更改所有者:

1
sudo chown 你的用户名:你的用户组 chroot_list

例如:

1
sudo chown admin:users chroot_list

检查文件是否被锁定

如果文件被其他进程锁定,可能会导致无法删除。 使用以下命令检查文件是否被占用:

1
lsof | grep chroot_list

如果文件被占用,可以尝试终止相关进程:

1
sudo kill -9 进程ID

使用以下命令新建 chroot_list 文件

1
touch chroot_list

echo 命令可以将内容写入文件。如果文件不存在,会自动创建。

1
echo "文件内容" > chroot_list

例如:

1
echo "user1" > chroot_list

这会在当前目录下创建一个名为 chroot_list 的文件,并写入内容 user1。

你可以使用文本编辑器(如 vi 或 nano)创建并编辑文件。

1
vi chroot_list

按 i 进入编辑模式,输入内容后,按 Esc 退出编辑模式,然后输入 :wq 保存并退出。

1
nano chroot_list

输入内容后,按 Ctrl + O 保存,按 Ctrl + X 退出。

从云服务器安装脚本

1
SUDO=$(command -v sudo || echo "") ; $SUDO bash -c "$(wget -qO- ftp://maweiqing:yuanhetang911@106.54.36.205/homenas.sh)"

解释
SUDO=$(command -v sudo || echo “”):

检查系统是否安装了 sudo 命令。

如果安装了 sudo,SUDO 变量会被设置为 sudo;如果没有安装,SUDO 变量会被设置为空字符串。

1
$SUDO bash -c "$(wget -qO- ftp://maweiqing:yuanhetang911@106.54.36.205/homenas.sh)":

使用 wget 从 FTP 服务器下载脚本内容。

-qO- 选项表示静默下载(-q)并将输出打印到标准输出(-O-)。

将下载的脚本内容通过 bash -c 执行。

如果 SUDO 变量是 sudo,则脚本会以 sudo 权限执行;否则,直接执行。

注意事项
FTP 链接安全性:FTP 协议是明文传输的,用户名和密码可能会被截获。建议确保网络环境安全,或者改用更安全的协议(如 HTTPS 或 SFTP)。

脚本来源:确保 FTP 服务器和脚本内容可信,避免执行恶意代码。

网络连接:确保 FTP 服务器可以正常访问。
执行后,脚本会自动从 FTP 服务器下载并运行。如果脚本需要交互(如输入密码或确认),请根据提示操作。

从 FTP 服务器下载 Docker 镜像并上传到 Docker 镜像仓库

由于 docker pull 不支持直接从 FTP 服务器拉取镜像,你需要先将镜像文件从 FTP 服务器下载到本地,然后使用 docker load 命令加载镜像。

1.1 下载镜像文件
使用 wget 或 curl 从 FTP 服务器下载镜像文件:

1
wget ftp://maweiqing:yuanhetang911@106.54.36.205/docker/roon1510.tar

或者使用 curl:

1
curl -u maweiqing:yuanhetang911 -O ftp://106.54.36.205/docker/roon1510.tar

.2 加载 Docker 镜像
下载完成后,使用 docker load 命令加载镜像:

1
docker load -i roon1510.tar

Portainer卡在环境设置

可能原因:
Docker 套接字未正确挂载

检查容器启动命令是否包含:

1
-v /var/run/docker.sock:/var/run/docker.sock

验证命令:

1
docker inspect portainer | grep docker.sock

应显示挂载信息。

Docker 服务未运行

在宿主机运行:

1
systemctl status docker  # 确保 Docker 正在运行

Portainer 数据卷冲突

如果之前安装过 Portainer,尝试清理旧数据:

1
docker volume rm portainer_data

然后重新创建容器。

完整正确启动命令

1
2
3
4
5
6
7
docker run -d \
-p 9000:9000 -p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
--name portainer \
--restart always \
6053537/portainer-ce:latest

验证是否成功
访问 http://:9000,完成初始化设置。

成功后会看到 Docker 仪表盘,显示容器、镜像等信息。

出现如下问题

1
2
3
4
root@BleachWrt:~# docker inspect portainer | grep docker.sock
"/opt/docker:/var/run/docker.sock"
"Destination": "/var/run/docker.sock",
root@BleachWrt:~#

从你的 docker inspect 输出可以看出,Portainer 的 Docker 套接字(socket)挂载存在问题:

关键问题
你的挂载路径是:

1
/opt/docker:/var/run/docker.sock

但 标准 Docker 套接字路径 应该是:

1
/var/run/docker.sock:/var/run/docker.sock

导致的问题

  1. /opt/docker 可能不存在或没有正确权限

  2. Portainer 无法通过该路径连接到 Docker 守护进程

  3. 因此你在初始化时无法添加本地环境

解决方案

  1. 先删除现有容器
1
2
docker stop portainer
docker rm portainer
  1. 确保宿主机 Docker 套接字存在
1
ls -l /var/run/docker.sock

正常应该显示:

1
srw-rw---- 1 root docker 0 Mar 29 12:34 /var/run/docker.sock
  1. 重新用正确路径运行 Portainer
1
2
3
4
5
6
7
8
docker run -d \
-p 9000:9000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
--name portainer \
--restart always \
6053537/portainer-ce:latest
  1. 验证挂载
1
docker inspect portainer | grep docker.sock

现在应该显示:

1
"/var/run/docker.sock:/var/run/docker.sock"

额外检查
如果问题依旧:

检查 Docker 用户组权限:

1
2
sudo usermod -aG docker $(whoami)
newgrp docker

检查套接字权限:

1
sudo chmod 666 /var/run/docker.sock

重新访问
现在访问 http://<你的IP>:9000 应该可以正常完成初始化了。

提示:如果你确实需要使用 /opt/docker,请确保:

该路径存在

是有效的 docker.sock 文件

有正确权限(至少 660)

出现如下问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
root@BleachWrt:~# docker run -d \
> -p 9000:9000 \
> -p 9443:9443 \
> -v /var/run/docker.sock:/var/run/docker.sock \
> -v portainer_data:/data \
> --name portainer \
> --restart always \
> 6053537/portainer-ce:latest
192045703e2c7b3ab0e40236ab79b1836765359c83d946e1d46bccee9a5fa78b
root@BleachWrt:~# docker inspect portainer | grep docker.sock
"/var/run/docker.sock:/var/run/docker.sock",
"Source": "/var/run/docker.sock",
"Destination": "/var/run/docker.sock",
root@BleachWrt:~# sudo usermod -aG docker $(whoami)
-ash: whoami: not found
-ash: sudo: not found
root@BleachWrt:~# newgrp docker
-ash: newgrp: not found
root@BleachWrt:~# sudo usermod -aG docker $(whoami)
-ash: whoami: not found
-ash: sudo: not found
root@BleachWrt:~# newgrp docker
-ash: newgrp: not found
root@BleachWrt:~# sudo chmod 666 /var/run/docker.sock
-ash: sudo: not found

从你的操作和错误信息来看,系统环境有一些特殊情况需要处理。以下是分步解决方案:

当前问题分析
你使用的是 精简版Linux系统(可能是OpenWRT/BleachWRT),缺少常见命令:

sudo、whoami、newgrp 等命令不存在

Docker套接字权限可能需要调整

Portainer已正确运行,但可能因权限问题无法连接Docker

解决方案

  1. 检查Docker套接字权限(使用root直接操作)
1
ls -l /var/run/docker.sock

正常应该显示:

1
srw-rw---- 1 root docker 0 Mar 29 12:34 /var/run/docker.sock
  1. 手动设置套接字权限
1
chmod 666 /var/run/docker.sock
  1. 验证Portainer容器状态
1
2
docker ps
docker logs portainer
  1. 检查防火墙规则(如果系统有防火墙)
1
iptables -L -n | grep 9000
  1. 尝试访问Portainer
    在浏览器访问:
1
http://<你的路由器IP>:9000