Je téměř jisté, že distribuce Linuxu, kterou provozujete v kontejneru Docker, nemá ve výchozím nastavení nainstalovaný Vim ani žádný jiný textový editor.
Rychlý způsob, jak nainstalovat textový editor do kontejneru Docker, by bylo zadat běžící kontejner:
docker exec -it container_name_or_ID sh
Ověřte, kterou distribuci Linuxu používá:
cat /etc/os-release
A pak použijte správce balíčků distribuce k instalaci.
Chcete-li nainstalovat Vim na Ubuntu nebo Debian, použijte příkaz apt:
apt update
apt install vim
Chcete-li jej nainstalovat na CentOS nebo Red Hat, použijte příkaz Yum:
yum install vim
A pokud je to Alpine Linux, použijte příkaz apk:
apk update
apk add vim
Mělo by vám to umožnit spouštět a používat Vim v aktuálně spuštěném kontejneru. S tímto přístupem je ale velký problém. Pokud spustíte nový kontejner se stejným obrazem Docker, příkaz Vim, který jste nainstalovali, nebude v tomto novém kontejneru přítomen. Budete jej muset nainstalovat znovu.
Pokud chcete, aby všechny kontejnery, které jsou vytvořeny pomocí daného obrazu Dockeru, měly také ve výchozím nastavení nainstalovaný Vim, musíte přidat instalační příkazy do Dockerfile.
Doufám, že víte, jak vytvořit vlastní obrázek Docker pomocí Dockerfile. Pokud ne, dovolte mi, abych vám to rychle připomněl jednoduchým příkladem Alpine Linux.
Vytvořte nový soubor s názvem Dockerfile:
touch Dockerfile
Nyní otevřete tento Dockerfile pro úpravy v editoru a přidejte do něj následující řádky a uložte jej:
FROM alpine:latest
RUN apk update
RUN apk add vim
V zásadě dáváte Dockeru pokyn, aby stáhl nejnovější obraz Alpine docker a poté spustil správce apk packgae, aby aktualizoval mezipaměť a nainstaloval Vim.
Tento vlastní obrázek Dockeru musíte vytvořit z výše uvedeného souboru Dockerfile. Spuštěním příkazu, jako je tento, vytvořte vlastní obrázek Docker:
docker build -t new_docker_image_name PATH_to_Dockerfile
Pokud nyní spustíte jakýkoli kontejner s tímto novým vlastním obrazem Docker, měl by již mít nainstalovaný editor Vim.
Doufám, že vám tento rychlý tip Dockeru pomohl.