一次bash: docker: command not found bash: yum: command not found的解决
Posted 周青404
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一次bash: docker: command not found bash: yum: command not found的解决相关的知识,希望对你有一定的参考价值。
周青的日常问题记录
项目场景:
学习硅谷电商毕设项目_微服务版本,建站练手,在测试mysql中docker exec进入容器sql语句
问题描述
docker exec bash后用\\q退出mysql
再运行bash命令继续操作docker发现命令失效
bash: docker: command not found bash
想service docker start启动docker但是
docker: unrecognized service
把服务器重启了一下,到这一步还是不行。
找了找办法要卸载重装但yum竟然也用不了
bash: yum: command not found
原因分析:
用\\q退出mysql后仍当前在exec执行docker容器的bash中,故不能识别除基础bash外的linux命令。
command not found状态下用户显示是:root@e30eeb49974d:/#
root@e30eeb49974d:/# docker -v
bash: docker: command not found
正常状态下用户显示是:[root@VM-24-10-centos ~]#
[root@VM-24-10-centos ~]# docker -v
Docker version 20.10.23, build 7155243
解决方案:
用exit退出exec bash
root@e30eeb49974d:/# exit
exit
[root@VM-24-10-centos ~]#
后记废话
以下为解决本问题时走的弯路,并无阅读价值,仅做面向自己的记录。
弯路第一阶段
意识到真正原因前,我以为是腾讯云不行。。。查了一下【1】【2】,发现是因为系统的环境变量没有正确配置造成的,想要解决需要手动配置变量,我不知道还有多少命令也失效了,对Linux也不甚熟悉。不敢手动继续改,就想去腾讯云控制台重装了系统能不能解决。重装回来之后yum能用了
重新安装docker,
但一用还是不行。重装系统不能解决问题。
[root@VM-24-10-centos ~]# systemctl start docker
[root@VM-24-10-centos ~]# docker-v
-bash: docker-v: 未找到命令
[root@VM-24-10-centos ~]# service docker start
Redirecting to /bin/systemctl start docker.service
弯路第二阶段
最早搜索 bash: docker:command not found时看到过一句话劝大家最好把docker设置成开机自启。在《当提示Redirecting to /bin/systemctl stop docker.service请使用下列命令 启动与停止Docker》中看到了开机自启docker命令,尝试后暂时成功。
systemctl enable docker
运行后docker正常
[root@VM-24-10-centos ~]# docker -v
Docker version 20.10.23, build 7155243
[root@VM-24-10-centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
但走到exec bash时又回到老路上。。。
弯路第三阶段
断开连接又重新连上,发现用户提醒不同,才发现了问题根源。
End
无法在 Docker 中使用 sudo 命令,显示“bash: sudo: command not found”
【中文标题】无法在 Docker 中使用 sudo 命令,显示“bash: sudo: command not found”【英文标题】:Unable to use sudo commands within Docker, "bash: sudo: command not found" is displayed 【发布时间】:2017-02-20 11:32:36 【问题描述】:我已经使用以下命令安装了 TensorFlow
docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel
我需要在 Windows 机器上设置 TensorFlow Serving。我关注the instructions 并在安装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
【问题讨论】:
投票关闭超级用户的人是怎么回事?关于编写 Dockerfile 的问题肯定是与开发相关的;这个应该被关闭,因为没有足够的信息来重现(不包含完整的 Dockerfile、运行命令,甚至除了图像链接后面的错误),不属于 SU。 【参考方案1】: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 documentation on the User command。
【讨论】:
反斜杠实际上是有害的,如果像这里一样,你将所有内容放在一行上(因为在这种情况下,它们正在转义空格,从而使参数build-essential
而不是 @ 987654327@);它们仅在多行命令中是正确的,因为 OP 试图输入但未能进行代码格式化。
@sam:在运行命令“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”,报错“bash: apt-get: command not found”。
@Vasanti,好吧,这从表面上看很简单,不是吗?您要扩展的基本映像是什么?
@CharlesDuffy:我运行以下命令来构建我的容器“docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel”
嗯。如果它基于github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/… 的 Dockerfile,那么它 基于 Ubuntu,因此应该 具有 apt-get。有趣的是要弄清楚内部 PATH 是否错误,或者它是否与该 Dockerfile 不匹配。不过,这很容易做到——只需在容器中使用 echo $PATH
和 ls -l /usr/sbin
。【参考方案2】:
docker 自带 root,它不需要 sudo。
顺便说一句,如果你想在 docker 中使用 sudo,如果你想 install sudo
,
试试这个,
apt-get update && \
apt-get -y install sudo
现在您可以在 docker 中将 sudo 与您的命令一起使用...
【讨论】:
没有理由通过在容器中安装sudo
来削弱容器的安全性,即使可以。
如果未安装 apt-get,请使用:apk add --update sudo
@PeterV.Mørch 对sudo --user postgres psql -d template1
这样的命令有用吗?以上是关于一次bash: docker: command not found bash: yum: command not found的解决的主要内容,如果未能解决你的问题,请参考以下文章
-bash: docker-compose: command not foundlinux 安装 docker-compose
无法在 Docker 中使用 sudo 命令,显示“bash: sudo: command not found”
docker-compose: command not found
docker-compose: command not found