Zainstalowałem docker na mojej maszynie wirtualnej hosta. A teraz chcę utworzyć plik przy użyciu vi
.
Ale pokazuje mi błąd:
bash: vi: command not found
Zainstalowałem docker na mojej maszynie wirtualnej hosta. A teraz chcę utworzyć plik przy użyciu vi
.
Ale pokazuje mi błąd:
bash: vi: command not found
image
czego budujesz. Najprawdopodobniej image
używasz jest tak lżejszy, że zawiera tylko rzeczy, które musisz uruchomić jako obraz. Musisz ręcznie zainstalować potrzebne pakiety.
Odpowiedzi:
zaloguj się do kontenera za pomocą następującego polecenia:
docker exec -it <container> bash
Następnie uruchom następujące polecenie.
apt-get update
apt-get install vim
Twój kontener prawdopodobnie nie został zainstalowany po wyjęciu z pudełka.
Uruchom apt-get install vim
terminal i powinieneś być gotowy do pracy.
vim-tiny
(Ubuntu)
apt-get update
THENapt-get install vim
Polecenie do uruchomienia zależy od używanego obrazu podstawowego.
W przypadku Alpine vi
jest instalowany jako część podstawowego systemu operacyjnego. Instalacja vim
wyglądałaby następująco:
apk -U add vim
Dla Debiana i Ubuntu:
apt-get update && apt-get install -y vim
W przypadku CentOS vi
jest zwykle instalowany z podstawowym systemem operacyjnym. Dla vim
:
yum install -y vim
Należy to zrobić tylko na wczesnym etapie rozwoju. Po uzyskaniu działającego kontenera zmiany w plikach powinny zostać wprowadzone w obrazie lub konfiguracjach przechowywanych poza kontenerem. Zaktualizuj swój plik Dockerfile i inne pliki, których używa do tworzenia nowego obrazu. Z pewnością nie powinno się tego robić podczas produkcji, ponieważ zmiany wewnątrz pojemnika są z założenia efemeryczne i zostaną utracone po wymianie pojemnika.
USER root
wewnątrz pliku Dockerfile robi to, ale pamiętaj, aby przełączyć się z powrotem do innego użytkownika. Jestem uruchomionym kontenerem:docker exec -u root ...
UŻYJ TEGO:
apt-get update && apt-get install -y vim
Wyjaśnienie powyższego polecenia
bash: apt-get: command not found
apk add
Możesz też zachować małe obrazy Dockera, nie instalując niepotrzebnych edytorów. Możesz edytować pliki przez ssh z hosta dockera do kontenera:
vim scp://remoteuser@container-ip//path/to/document
Użyj poniższego polecenia w kontenerze opartym na Debianie:
apt-get install vim-tiny
Pełna instrukcja użycia w Dockerfile:
RUN apt-get update && apt-get install --no-install-recommends -y \
vim-tiny \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
Nie instaluje niepotrzebnych pakietów i usuwa niepotrzebne pobrane pliki, więc rozmiar obrazu Dockera nie wzrośnie dramatycznie.
Aby zainstalować w kontenerze Docker, możesz uruchomić polecenie
docker exec apt-get update && apt-get install -y vim
Ale będzie to ograniczone do kontenera, w którym jest zainstalowany vim. Aby udostępnić go wszystkim kontenerom, edytuj plik Dockerfile i dodaj
URUCHOM apt-get update && apt-get install -y vim
lub możesz również rozszerzyć obraz w nowym pliku Dockerfile i dodać powyższe polecenie. Na przykład.
OD <nazwa obrazu>
URUCHOM apt-get update && apt-get install -y vim
Wewnątrz kontenera (w dokerze, a nie w maszynie wirtualnej), domyślnie te elementy nie są instalowane. Nawet apt-get , wget nie będzie działać. Moja maszyna wirtualna działa w systemie Ubuntu 17.10. U mnie działał menadżer paczek mniam .
Yum nie jest częścią debiana ani ubuntu. Jest częścią czerwonego kapelusza. Ale działa w Ubuntu i jest domyślnie instalowany jak apt-get
Aby zainstalować vima, użyj tego polecenia
yum install -y vim-enhanced
Aby odinstalować Vima:
yum uninstall -y vim-enhanced
Podobnie,
yum install -y wget
yum install -y sudo
-y służy do zakładania tak, jeśli zostanie wyświetlony monit o jakiekolwiek pytanie po wykonaniu yum install nazwa pakietu
Jeśli faktycznie potrzebujesz małego edytora do prostego porządkowania w dokerze, użyj tego w swoim pliku Dockerfile:
RUN apt-get install -y busybox && ln -s /bin/busybox /bin/vi
Użyłem go na dokerze opartym na Ubuntu 18. (Oczywiście możesz potrzebować RUN apt-get update
przed nim, ale jeśli tworzysz własny plik Dockera, prawdopodobnie już go masz).
Jeśli chcesz zmienić plik tylko raz. Najlepiej dokonać zmiany lokalnie i zbudować nowy obraz dockera z tym plikiem.
Powiedzmy w obrazie Dockera, że musisz zmienić plik o nazwie myFile.xml w / path / to / docker / image /. Więc musisz to zrobić.
FROM docker-repo:tag
ADD myFile.xml /path/to/docker/image/
Następnie utwórz własny obraz dockera za pomocą docker build -t docker-repo:v-x.x.x .
Następnie użyj nowo utworzonego obrazu dockera.