2016-06-08 658 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