无法在Docker内使用sudo命令,显示“bash: sudo: command not find”

问题描述 投票:0回答:4

我已经使用以下命令安装了 TensorFlow

docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel

我需要在 Windows 机器上设置 TensorFlow Serving。我按照 说明 并在安装 TensorFlow Serving 依赖项时运行下面提到的

sudo
命令:

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

显示以下错误:

bash: sudo: command not found
docker sudo tensorflow-serving
4个回答
145
投票

docker 附带 root,它不需要 sudo

顺便说一句,如果你想在 docker 中使用 sudo 的话

install sudo

试试这个,

apt-get update && \
      apt-get -y install sudo

现在您可以在 docker 中将 sudo 与命令一起使用...


26
投票

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

如果您不想以 root 身份运行,请参阅 有关用户命令的 Docker 文档


9
投票

我们不想通过在容器中安装 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

0
投票

我不被允许在我的容器中安装 sudo。对我来说,解决方案是以 root 身份进入容器终端:

docker exec -u root -it <container name/id>
© www.soinside.com 2019 - 2024. All rights reserved.