2016-06-08 659 views
11

启动一个名为nginx的dockerised应用程序,然后在其中执行bash。令我惊奇的是,我无法在那个容器里找到vim,vi甚至是yum。不能在Docker容器中使用vim,vi,nano,yum

请原谅我,因为我对码头工人和学习非常陌生。

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

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

我的主机是的Ubuntu 16.04,我使用最新的码头工人引擎和泊坞窗CLI

[email protected]:/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 
[email protected]:/home/jim/web# 

请不要走我的主机名,因为15.04我已经升级:slight_smile:

[email protected]:/home/jim/web# lsb_release -a 
No LSB modules are available. 
Distributor ID: Ubuntu 
Description: Ubuntu 16.04 LTS 
Release: 16.04 
Codename: xenial 
[email protected]:/home/jim/web# 

任何帮助将非常感激。

+0

,今天刚刚发生在我身上!我在某些主题中也看到要更改Dockerfile。我会尝试 –

回答

6

为了我的圣惊讶我找不到vimvi甚至yum该容器内。

它只是取决于nginx image及其基本图像:如果vim从未安装在那里,您的容器将无法找到它。

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

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

但是,该图像可以访问互联网?说如果你想安装任何额外的软件? 有什么令我惊讶的是,它最终是一个操作系统和Web服务器,为什么没有能力安装软件? – learner

+0

@learner该图像将具有与您的主机相同的Internet访问权限。如果您位于代理之后,请使用http://stackoverflow.com/a/35286398/6309并确保您的docker守护程序知道该代理(https://docs.docker.com/engine/admin/systemd/# http-proxy) – VonC

+0

很酷。我会建立这个形象!非常感谢 – learner

18

sudo易于得到更新
命令和apt-get安装VIM

我有同样的问题。我遵循了上面简单的两个步骤,它像魅力一样工作。

+0

这是更正确的:) –

+0

在码头我运行它说'sudo:command not found' – d8aninja

+1

@ D8Amonk>这是因为你已经作为根登录。只要删除“sudo” – Spock

0

您可以创建一个Dockerfile使用nginx的码头工人形象,并与要添加修改...

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

'vi'包无法找到我。必须做'vim'。 –

+0

so RUN [“apt-get”,“install”,“ - y”,“vim”] – KatyGB