【问题标题】:Cannot use vim, vi, nano, yum inside docker container不能在 docker 容器中使用 vim、vi、nano、yum
【发布时间】:2016-06-08 06:42:09
【问题描述】:

启动一个名为 nginx 的 dockerised 应用程序,然后在其中执行 bash。令我惊讶的是,我在那个容器中找不到 vim 、 vi 甚至 yum 。

请原谅我,因为我对 docker 和学习非常陌生。

以下命令可用于重现该问题。

docker run -d --name=my_nginxtemp nginx
docker exec -i -t my_nginxtemp bash
docker commit my_nginxtemp my_nginx

我的主机是 Ubuntu 16.04,我正在使用最新的 docker-engine 和 docker cli

root@jim-Ubuntu1504:/home/jim/web# docker version
Client:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 22:00:43 2016
OS/Arch: linux/amd64

Server:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 22:00:43 2016
OS/Arch: linux/amd64
root@jim-Ubuntu1504:/home/jim/web#

请不要继续使用我从 15.04 起升级的主机名:slight_smile:

root@jim-Ubuntu1504:/home/jim/web# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04 LTS
Release: 16.04
Codename: xenial
root@jim-Ubuntu1504:/home/jim/web#

非常感谢任何帮助。

【问题讨论】:

标签: docker


【解决方案1】:

sudo apt-get 更新
sudo apt-get install vim

我有同样的问题。我按照上面简单的两个步骤操作,效果很好。

【讨论】:

  • @D8Amonk > 那是因为您已经以 root 身份登录。只需删除“sudo”
【解决方案2】:

令我惊讶的是,我在那个容器中找不到 vimvi 甚至 yum

这仅仅取决于nginx image 及其基础镜像:如果vim 从未安装在那里,您的容器将找不到它。

您可以构建自己的映像,从 nginxadding the software you need 开始。

FROM nginx
RUN apt-get update
RUN apt-get install vim

【讨论】:

  • 但是该图像可以访问互联网吗?说是否要安装任何其他软件?令我惊讶的是,它最终是一个操作系统和网络服务器,那么为什么不具备安装软件的能力呢?
  • @learner 该图像将具有与您的主机相同的 Internet 访问权限。如果您使用代理,请使用 stackoverflow.com/a/35286398/6309 并确保您的 docker 守护进程知道该代理 (docs.docker.com/engine/admin/systemd/#http-proxy)
  • 酷。我会建立那个形象!非常感谢
  • 是的,它与主机具有相同的访问权限。是因为 docker 的 Bridge 网络吗?想明白这一点
【解决方案3】:

为像我这样的初学者添加更多描述: 有些容器是在 ubuntu 上构建的,因此您甚至找不到特定于 RedHat/CentOS 的 yum 包管理器。

1.使用 exec 进入容器:

username@hostname:/home/username $ docker container exec -it container_image_name bash

2。找出构建容器映像的操作系统并采取相应措施 现在,要确定容器映像是在哪个操作系统上构建的,我们还可以在进入该容器后使用以下命令检查操作系统版本:

root@5e9d0e3c1001:/# cat /etc/*release*
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@5e9d0e3c1001:/#

然后执行下面的操作(我们做更新的原因是第一次安装之前是强制的):

root@5e9d0e3c1001:/# apt-get update
root@5e9d0e3c1001:/# apt-get install vim

参考:https://forums.docker.com/t/cannot-use-vim-vi-nano-yum-inside-docker-container/14905

【讨论】:

    【解决方案4】:

    这是我们不得已的编辑器:

    echo "This is a workaround." > file.txt
    echo "Added more text." >> file.txt
    cat file.txt
    

    【讨论】:

      【解决方案5】:

      您可以创建一个 Dockerfile 来使用 nginx docker 映像并使用您要添加的内容进行修改...

      FROM nginx
      RUN ["apt-get","update"]
      RUN ["apt-get","install","-y","vi"]
      

      【讨论】:

      • vi 找不到我的包。不得不做vim
      • 所以运行 ["apt-get","install","-y","vim"]
      猜你喜欢
      • 2019-10-23
      • 2021-08-12
      • 2015-03-05
      • 2022-09-29
      • 1970-01-01
      • 1970-01-01
      • 2016-11-03
      • 1970-01-01
      • 2015-10-09
      相关资源
      最近更新 更多