Bagaimana cara menjalankan vi pada container docker?

103

Saya telah menginstal buruh pelabuhan di mesin virtual host saya. Dan sekarang ingin membuat file menggunakan vi.

Tapi itu menunjukkan kepada saya kesalahan:

bash: vi: command not found
Krati Jain
sumber
1
vi mungkin tidak dipasang di dalam wadah. Container mana yang sudah Anda pasang dan jalankan?
Hüseyin BABAL
1
Anda harus lebih spesifik. Apakah Anda mencoba menjalankan vi di dalam container, jika ya, gambar mana yang menjadi dasar container? Kemungkinan besar Anda belum menginstal vi. (apt-get install vim)
wpp
Itu tergantung dari mana imageAnda membangun. Kemungkinan besar yang imageAnda gunakan sangat ringan sehingga hanya memiliki hal-hal yang Anda butuhkan untuk dijalankan sebagai gambar. Anda perlu menginstal paket yang Anda butuhkan secara manual.
ilusionis
3
Anda mungkin tidak boleh melakukan config di dalam container. Lakukan di Dockerfile sebagai gantinya.
Adrian Mouat

Jawaban:

150

login ke container dengan perintah berikut:

docker exec -it <container> bash

Kemudian, jalankan perintah berikut.

apt-get update
apt-get install vim
arunprakashpj
sumber
11
Jika Anda mengalami masalah izin ditolak saat menjalankan apt-get, Anda perlu menjalankan docker exec sebagai root. "buruh pelabuhan exec -u root -it <container> bash". Maka apt-get seharusnya berfungsi.
java25
Terima kasih @arunprakashpj. Satu-satunya perintah yang berfungsi untuk gambar yang diunduh dari penyimpanan AWS.
realPK
37

Penampung Anda mungkin belum memasangnya di luar kotak.

Jalankan apt-get install vimdi terminal dan Anda harus siap untuk pergi.

Englund
sumber
2
Ya, tapi saya lebih suka vim-tiny(Ubuntu)
Ben Whaley
3
Sebelum menjalankan 'apt-get install vim', Anda perlu menjalankan 'apt-get update'.
pengguna1521213
2
Pertama apt-get updateKEMUDIANapt-get install vim
Yogi Ghorecha
32

Perintah untuk menjalankan tergantung pada gambar dasar yang Anda gunakan.

Untuk Alpine, vidiinstal sebagai bagian dari OS dasar. Instalasi vimakan menjadi:

apk -U add vim

Untuk Debian dan Ubuntu:

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

Untuk CentOS, vibiasanya dipasang dengan base OS. Untuk vim:

yum install -y vim

Ini seharusnya hanya dilakukan pada pengembangan awal. Setelah Anda mendapatkan wadah yang berfungsi, perubahan pada file harus dilakukan pada gambar atau konfigurasi yang disimpan di luar wadah Anda. Perbarui Dockerfile Anda dan file lain yang digunakannya untuk membuat image baru. Hal ini tentunya tidak boleh dilakukan dalam produksi karena perubahan di dalam wadah bersifat sementara dan akan hilang saat wadah diganti.

BMitch
sumber
1
KESALAHAN: Tidak dapat mengunci basis data: Izin ditolak
garg10may
1
Perintah @ garg10may harus dijalankan sebagai root. USER rootdi dalam Dockerfile melakukan ini, tetapi pastikan untuk beralih kembali ke pengguna Anda yang lain. Saya adalah wadah yang sedang berjalan:docker exec -u root ...
BMitch
21

GUNAKAN INI:

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

Penjelasan perintah di atas

  1. apt-get update => Akan memperbarui paket saat ini
  2. apt-get install => Akan menginstal paket
  3. -y => Akankah lewat izin, izin default akan diatur ke Ya.
  4. vim => Nama paket yang ingin Anda instal.
Yogi Ghorecha
sumber
Saya mencobanya tetapi mendapatkan kesalahan inibash: apt-get: command not found
Junaid
@Junaid memeriksa denganapk add
Yogi Ghorecha
12

Tambahkan baris berikut di Dockerfile Anda lalu buat kembali image buruh pelabuhan.

RUN apt-get update && apt-get install -y vim
CJ Chang
sumber
9

Atau, pertahankan gambar buruh pelabuhan Anda kecil dengan tidak memasang editor yang tidak perlu. Anda dapat mengedit file melalui ssh dari host buruh pelabuhan ke penampung:

vim scp://remoteuser@container-ip//path/to/document
Matthew
sumber
3
Bukankah ini hanya berfungsi jika container menjalankan ssh ? Saya pikir itu ide yang brilian pada awalnya, tetapi tampaknya tidak berhasil.
Kevin
7

Gunakan perintah di bawah ini dalam penampung berbasis Debian:

apt-get install vim-tiny

Instruksi lengkap untuk menggunakan di Dockerfile:

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

Itu tidak menginstal paket yang tidak perlu dan menghapus file yang tidak perlu diunduh, sehingga ukuran gambar buruh pelabuhan Anda tidak akan meningkat secara dramatis.

Pourya MandiSanam
sumber
3

Untuk menginstal dalam wadah Docker Anda, Anda dapat menjalankan perintah

buruh pelabuhan exec apt-get update && apt-get install -y vim

Tetapi ini akan terbatas pada wadah tempat vim dipasang. Untuk membuatnya tersedia untuk semua container, edit Dockerfile dan tambahkan

JALANKAN pembaruan apt-get && apt-get install -y vim

atau Anda juga dapat memperluas image di Dockerfile baru dan menambahkan perintah di atas. Misalnya.

DARI <image name>

JALANKAN pembaruan apt-get && apt-get install -y vim

MB11
sumber
1

Di dalam container (di buruh pelabuhan, bukan di VM), secara default ini tidak diinstal. Bahkan apt-get , wget tidak akan berfungsi. VM saya berjalan di Ubuntu 17.10. Bagi saya yum manaager paket berhasil.

Yum bukan bagian dari debian atau ubuntu. Itu bagian dari topi merah. Tapi, ini berfungsi di Ubuntu dan diinstal secara default seperti apt-get

Untuk menginstal vim, gunakan perintah ini

yum install -y vim-enhanced 

Untuk menghapus vim:

yum uninstall -y vim-enhanced 

Demikian pula,

yum install -y wget 
yum install -y sudo 

-y untuk asumsi yes jika diminta untuk pertanyaan apa pun yang ditanya setelah melakukan yum install nama paket

P Satish Patro
sumber
0

Jika Anda benar-benar menginginkan editor kecil untuk pekerjaan rumah sederhana di buruh pelabuhan, gunakan ini di Dockerfile Anda:

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

Saya menggunakannya pada buruh pelabuhan berbasis Ubuntu 18. (Tentu saja Anda mungkin memerlukan RUN apt-get updatesebelumnya tetapi jika Anda membuat file Docker Anda sendiri, Anda mungkin sudah memilikinya.)

Samuel Åslund
sumber
0

Jika Anda perlu mengubah file sekali saja. Anda harus memilih melakukan perubahan secara lokal dan membangun image buruh pelabuhan baru dengan file ini.

Katakanlah dalam gambar buruh pelabuhan, Anda perlu mengubah file bernama myFile.xml di bawah / path / to / docker / image /. Jadi, Anda perlu melakukannya.

  1. Salin myFile.xml di sistem file lokal Anda dan lakukan perubahan yang diperlukan.
  2. Buat file bernama 'Dockerfile' dengan konten berikut-
FROM docker-repo:tag
ADD myFile.xml /path/to/docker/image/

Kemudian buat gambar buruh pelabuhan Anda sendiri dengan docker build -t docker-repo:v-x.x.x .

Kemudian gunakan image buruh pelabuhan yang baru Anda buat.

misbah
sumber