无法在Docker中使用sudo命令,显示"bash:sudo:command not found"

Vas*_*nti 8 sudo docker tensorflow-serving

我使用以下命令"docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel"安装了TensorFlow,我需要在Windows机器上设置TensorFlow服务.我按照" https://github.com/tensorflow/serving/blob/master/tensorflow_serving/g3doc/setup.md "中的说明进行操作,并在安装TensorFlow服务依赖项时运行下面提到的sudo命令:

docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel
Run Code Online (Sandbox Code Playgroud)

显示以下错误:

sudo apt-get update && sudo apt-get install -y \
     build-essential \
     curl \
     git \
     libfreetype6-dev \
     libpng12-dev \
     libzmq3-dev \
     pkg-config \
     python-dev \
     python-numpy \
     python-pip \
     software-properties-common \
     swig \
     zip \
     zlib1g-dev
Run Code Online (Sandbox Code Playgroud)

Moh*_*med 23

docker与root一起出现它不需要sudo.

顺便说一句,如果你想在码头工作中想要sudo install sudo,

试试这个,

apt-get update && \
      apt-get -y install sudo
Run Code Online (Sandbox Code Playgroud)

现在你可以在docker中使用sudo和你的命令......

  • 即使可以,也没有理由通过在容器中安装“sudo”来削弱容器的安全性。 (4认同)
  • @alper 在使用“Dockerfile”构建容器时,作为 root 是安全的。为此,你不需要`sudo`,因为你已经是root了。在“运行”容器时以 root 身份“不”安全。所以你不应该需要“sudo”。仅安装“sudo”会削弱安全性。如果由于某种原因您的应用程序*在运行时*需要`sudo`,我的说法是您的应用程序从安全角度来看已经被破坏了。或者告诉我需要“sudo”的具体细节,我们将从那里获取它。 (2认同)

Tam*_*inn 7

我们不想通过在容器中安装 sudo 来削弱容器的安全性。但我们也不想改变在普通机器上工作的现有脚本,以便它们在不需要 sudo 的 docker 中工作。

相反,我们可以定义一个虚拟的 bash 脚本来替换 sudo,它只执行参数而不提升权限,并且仅在 docker 镜像内定义。

将其添加到您的 Dockerfile 中:

# Make sudo dummy replacement, so we don't weaken docker security
RUN echo "#!/bin/bash\n\$@" > /usr/bin/sudo
RUN chmod +x /usr/bin/sudo
Run Code Online (Sandbox Code Playgroud)


Sam*_*ers 6

Docker镜像通常没有sudo,root默认情况下您已经在运行.尝试

apt-get update && apt-get install -y build-essential curl git libfreetype6-dev libpng12-dev libzmq3-dev pkg-config python-dev python-numpy python-pip software-properties-common swig zip zlib1g-d
Run Code Online (Sandbox Code Playgroud)

如果您不希望以root身份运行,请参阅User命令上的Docker文档.