Docker container üzerinde vi nasıl çalıştırılır?


101

Docker'ı ana bilgisayar sanal makineme kurdum. Ve şimdi kullanarak bir dosya oluşturmak istiyorum vi.

Ama bana bir hata gösteriyor:

bash: vi: command not found

1
vi, konteynerin içine yüklenemez. Hangi konteyneri yüklediniz ve çalıştırdınız?
Hüseyin BABAL

1
Daha spesifik olmalısın. Vi'yi bir konteynerin içinde çalıştırmaya mı çalışıyorsunuz, öyleyse konteyner hangi görüntüye dayanıyor? Muhtemelen vi'yi yüklemediniz. (apt-get install vim)
wpp

Hangisinden imageinşa ettiğinize bağlı . Büyük olasılıkla imagekullandığınız o kadar hafiftir ki, yalnızca görüntü olarak çalıştırmanız gereken şeylere sahiptir. İhtiyaç duyduğunuz paketleri manuel olarak yüklemeniz gerekir.
illüzyonist

3
Muhtemelen bir konteynerin içinde yapılandırma yapmamalısınız. Bunun yerine Dockerfile'da yapın.
Adrian Mouat

Yanıtlar:


140

aşağıdaki komutla konteynere giriş yapın:

docker exec -it <container> bash

Ardından aşağıdaki komutu çalıştırın.

apt-get update
apt-get install vim

11
Apt-get'i çalıştırırken izin verilmedi sorunuyla karşılaşırsanız, docker exec'yi root olarak çalıştırmanız gerekir. "docker exec -u root -it <kapsayıcı> bash". O zaman apt-get çalışmalıdır.
java25

Teşekkürler @arunprakashpj. AWS deposundan indirilen görüntü için çalışan tek komut.
realPK

36

Konteynırınız muhtemelen kutudan çıkarmamıştır.

apt-get install vimTerminalde çalıştırın ve gitmeye hazır olmalısınız.


2
Evet, ama tercih ederim vim-tiny(Ubuntu)
Ben Whaley

2
'Apt-get install vim'i çalıştırmadan önce,' apt-get update 'çalıştırmanız gerekir.
user1521213

2
İlk apt-get updateSONRAapt-get install vim
Yogi Ghorecha

30

Çalıştırma komutu, kullandığınız temel görüntüye bağlıdır.

Alpine için, vitemel işletim sisteminin bir parçası olarak kurulur. Yükleme vimşu şekilde olacaktır:

apk -U add vim

Debian ve Ubuntu için:

apt-get update && apt-get install -y vim

CentOS için, vigenellikle temel işletim sistemi ile kurulur. Şunun için vim:

yum install -y vim

Bu sadece erken gelişimde yapılmalıdır. Çalışan bir kapsayıcı aldığınızda, dosyalarda değişiklikler, kabınızın dışında depolanan görüntünüz veya yapılandırmalarınızda yapılmalıdır. Dockerfile'ınızı ve yeni bir imaj oluşturmak için kullandığı diğer dosyaları güncelleyin. Bu kesinlikle üretimde yapılmamalıdır çünkü kabın içindeki değişiklikler tasarım gereği geçici olduğundan ve kap değiştirildiğinde kaybolacaktır.


1
HATA: Veritabanı kilitlenemiyor: İzin reddedildi
garg10may

1
@ garg10may komutlarının root olarak çalıştırılması gerekiyor. USER rootDockerfile içinde bunu yapar, ancak diğer kullanıcınıza geri döndüğünüzden emin olun. Ben çalışan bir konteynırım:docker exec -u root ...
BMitch

19

BUNU KULLAN:

apt-get update && apt-get install -y vim

Yukarıdaki komutun açıklaması

  1. apt-get update => Mevcut paketi günceller
  2. apt-get install => Paketi kuracak
  3. -y => İzni geçecek, varsayılan izin Evet olarak ayarlanacaktır.
  4. vim => Kurmak istediğiniz paketin adı.

12

Dockerfile dosyanıza aşağıdaki satırı ekleyin ve ardından docker görüntüsünü yeniden oluşturun.

RUN apt-get update && apt-get install -y vim

8

Alternatif olarak, gereksiz düzenleyiciler kurmayarak docker imajlarınızı küçük tutun. Docker ana bilgisayarından kapsayıcıya ssh üzerinden dosyaları düzenleyebilirsiniz:

vim scp://remoteuser@container-ip//path/to/document

3
Bu sadece kapsayıcı ssh çalıştırıyorsa işe yaramaz mı? İlk başta bunun harika bir fikir olduğunu düşündüm, ama işe yarayacak gibi görünmüyorum.
Kevin

7

Debian tabanlı kapsayıcıda aşağıdaki komutu kullanın:

apt-get install vim-tiny

Dockerfile'da kullanmak için eksiksiz talimat:

RUN apt-get update && apt-get install --no-install-recommends -y \   
 vim-tiny \  
 && apt-get clean && rm -rf /var/lib/apt/lists/*

Gereksiz paketleri kurmaz ve gereksiz indirilen dosyaları kaldırır, böylece docker imaj boyutunuz önemli ölçüde artmaz.


3

Docker konteynerinize kurmak için komut çalıştırabilirsiniz

docker exec apt-get update && apt-get install -y vim

Ancak bu, vim'in kurulu olduğu konteyner ile sınırlı olacaktır. Tüm kapsayıcılar için kullanılabilir hale getirmek için Dockerfile'ı düzenleyin ve

RUN apt-get update && apt-get install -y vim

veya ayrıca yeni Dockerfile içindeki görüntüyü genişletebilir ve yukarıdaki komutu ekleyebilirsiniz. Örneğin.

<Resim adı> 'ndan

RUN apt-get update && apt-get install -y vim


1

Konteynerin içinde (docker'da, VM'de değil), varsayılan olarak bunlar kurulu değildir. Apt-get bile , wget çalışmayacaktır. Sanal makinem Ubuntu 17.10 üzerinde çalışıyor. Benim için yum paket yöneticisi çalıştı.

Yum, debian veya ubuntu'nun bir parçası değildir. Kırmızı şapkanın bir parçası. Ancak, Ubuntu'da çalışır ve apt-get gibi varsayılan olarak kurulur

Tu kur vim, bu komutu kullan

yum install -y vim-enhanced 

Vim'i kaldırmak için:

yum uninstall -y vim-enhanced 

Benzer şekilde,

yum install -y wget 
yum install -y sudo 

-y, yum install packagename yaptıktan sonra sorulan herhangi bir soru sorulursa evet varsaymak içindir


0

Bir docker'da basit temizlik için aslında küçük bir düzenleyici istiyorsanız, bunu Dockerfile'ınızda kullanın:

RUN apt-get install -y busybox && ln -s /bin/busybox /bin/vi

Ubuntu 18 tabanlı bir docker üzerinde kullandım. (Elbette RUN apt-get updateondan öncekine ihtiyacınız olabilir , ancak kendi Docker dosyanızı oluşturuyorsanız, muhtemelen buna zaten sahipsinizdir.)


0

Bir dosyayı yalnızca bir kez değiştirmeniz gerekirse. Değişikliği yerel olarak yapmayı ve bu dosya ile yeni bir docker görüntüsü oluşturmayı tercih etmelisiniz.

Docker görüntüsünde, / yol / / docker / image / altındaki myFile.xml adlı dosyayı değiştirmeniz gerektiğini söyleyin. Yani yapman gerekiyor.

  1. MyFile.xml dosyasını yerel dosya sisteminize kopyalayın ve gerekli değişiklikleri yapın.
  2. Aşağıdaki içeriğe sahip 'Dockerfile' adlı bir dosya oluşturun:
FROM docker-repo:tag
ADD myFile.xml /path/to/docker/image/

Ardından kendi docker görüntünüzü oluşturun docker build -t docker-repo:v-x.x.x .

Ardından yeni oluşturduğunuz docker imajınızı kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.