如何使用无根 Docker 作为远程主机?

如何使用无根 Docker 作为远程主机?

我想通过在docker我的计算机上运行命令在服务器上运行 Docker 容器。我在服务器上安装 Ubuntu 18.04.3 (LTS) x64,创建一个新的非 root 用户

root@server:~#  useradd --create-home --shell /bin/bash unpriv

配置 SSH 并以非 root 用户身份连接到服务器

me@local:~#  ssh unpriv@SERVER_IP

安装无根 Docker通过运行

unpriv@server:~#  curl -sSL https://get.docker.com/rootless | sh

根据脚本的输出告诉我,我添加

export PATH=/home/unpriv/bin:$PATH
export DOCKER_HOST=unix:///run/user/1000/docker.sock

,然后/home/unpriv/.bashrc我重新资源

unpriv@server:~#  source .bashrc

然后启动 Docker 服务

unpriv@server:~#  systemctl --user start docker

现在我可以从 SSH 会话运行 Docker 容器

unpriv@server:~#  docker run --rm hello-world

但是,如果我设置

me@local:~#  export DOCKER_HOST=ssh://unpriv@SERVER_IP

在我的计算机上尝试运行容器,出现错误

me@local:~#  docker run --rm hello-world
docker: error during connect: Post http://docker/v1.40/containers/create: command [ssh -l unpriv 161.35.202.145 -- docker system dial-stdio] has exited with exit status 127, please make sure the URL is valid, and Docker 18.09 or later is installed on the remote host: stderr=bash: docker: command not found
.
See 'docker run --help'.

我认为添加的环境变量PATHDOCKER_HOSThome/unpriv/.bashrc在服务器上添加的环境变量没有被考虑。因此,docker找不到该命令(在服务器上)。我的配置中缺少什么?

答案1

感谢@BMitch。我在最后添加了环境变量,但应该在开头添加它们/home/unpriv/.bashrc,例如在

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

相关内容