Docker Ubuntu镜像 - bash:man命令未找到

26

我刚刚开始使用Docker,只拉取了一个基本的Ubuntu镜像。我在运行Docker的Windows 7机器上通过docker-machine进行操作。

我不知道为什么,在bash上找不到man命令。我尝试将man的路径导出到$PATH中,但仍然无法解决问题。

docker@default:~$ docker run -it ubuntu bash
root@2dd12b770666:/# man ls
bash: man: command not found
root@2dd12b770666:/# whereis man
man: /usr/local/man /usr/share/man
root@2dd12b770666:/# export PATH=/usr/local/man:/usr/share/man:$PATH
root@2dd12b770666:/# echo $PATH
/usr/local/man:/usr/share/man:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
root@2dd12b770666:/# man
bash: man: command not found
root@2dd12b770666:/#
如果 "export" 命令无法工作,我不确定编辑 bashrc 是否会有任何影响。所以还没有尝试过。是否还需要进行其他操作才能在 Docker 镜像上运行 man 命令?
4个回答

32

您需要在容器中安装man命令:

apt-get install man

1
考虑到 /usr/share/man 已经包含了内容,man 命令应该默认存在。谢谢。 - shrivb
@shrivb 我很惊讶地发现man命令也不可用。只有非常精简的Linux镜像才会删除甚至基本的命令,比如man - Macindows

23

注意: 对于一个完全新的docker安装,你可能需要执行以下操作:

apt-get update
apt-get install man

我运行了apt-get install man,但一开始出现了E: Unable to locate package man


在一开始遇到“E: 无法找到软件包 man”错误后,我尝试了这个方法并且成功了。 - Bimal

2
$ sudo apt-get update

$ sudo apt-get install -y man

4
虽然这可能回答了作者的问题,但它缺少一些解释性的文字和链接到文档。原始的 shell 片段没有一些相关的词语是不太有帮助的。您还可以找到“如何撰写良好答案”的链接(https://stackoverflow.com/help/how-to-answer)非常有帮助。请编辑您的答案。 - hellow

2

只需在容器内安装"man"即可解决您的问题:

root@d16e09720264:/# apt-get install -y man

似乎容器中应该已经安装了"man",因为您可以通过运行whereis命令找到"man":

root@d16e09720264:/# whereis man
man: /usr/local/man /usr/share/man

然而,在安装了“man”之后,您会发现whereis的结果已经改变:
root@d16e09720264:/# whereis man
man: /usr/bin/man /usr/local/man /usr/share/man /usr/share/man/man1/man.1.gz

这表明容器内默认未安装"man"。至少,"man"未正确安装。
据我所知,"vim"显示类似的结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接