提供对特定docker集装箱的shell访问权限,不会被添加到docker组中

我的任务是提供访问特定的docker集装箱,而无需将用户添加到docker组。

我做了什么

1)做一个nsenter-based脚本,必须input容器(我们称之为script1.sh

 #!/bin/bash PID=$(docker inspect --format {{.State.Pid}} kayako-dashboard) nsenter --target $PID --mount --uts --ipc --net --pid /bin/sh 

2)使全局脚本可用sudo ln -s /full/path/to/script1.sh /usr/local/bin/some_new_command

3)通过在authorized_keys文件中的ssh-rsa之前添加command="some_new_command"调整目标ssh密钥。

但是当我在目标用户下login时

sshpass -p <user_password> ssh <target_user>@<docker_host> "some_new_command"

我得到了一个错误Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

什么是错的,有什么办法解决?

我的内核版本是4.4.0 ,所以它支持inputpid命名空间。

nsenter版本: nsenter from util-linux 2.27.1

PS即使我添加<target_user some_new_command docker组,并尝试执行some_new_command我得到一个错误: nsenter: cannot open /proc/<PID>/ns/ipc: Permission denied

PPS如果我使用sudo some_new_command执行正常。