sudo
, nejužitečnější příkaz Linuxu, občas chybí v několika distribucích Linuxu, zejména v kontejnerech dockerů a odlehčených distribucích Linuxu.
sudo
je nástroj, který umožňuje uživatelům spouštět příkazy s root
přístup. Je to nejužitečnější příkaz a je součástí téměř všech hlavních distribucí Linuxu. Ano, skoro všechny. Několik linuxových distribucí, zejména obrázky dockerů, nedodává sudo
balíček ve výchozím nastavení. Pokud se zobrazí chyba bash: sudo: command not found
to jednoduše znamená, že sudo
není nainstalován.
bash:sudo:příkaz nenalezen
sudo
bude stačit. Instalace nového balíčku však vyžaduje použití root
schopnosti. sudo
.
Pro Ubuntu nebo jeho deriváty
$ apt install sudo
Pro Fedoru nebo její deriváty
$ dnf install sudo
Pro RHEL nebo jeho deriváty
$ yum install sudo
Pro Arch Linux nebo jeho deriváty
$ pacman install sudo
Pro obrázky Docker
Pokud však neexistuje účet root, jako v případě mnoha obrazů dockeru, nemusí to být možné. root
uživatel. V takovém případě budeme muset vytvořit vlastní obrázek pomocí sudo
předinstalovaný. Nebojte se, je to snadné.
Vytvořit vlastní obrázek Docker
K vytvoření vlastního obrazu dockeru je vyžadován Dockerfile. Dockerfile se používá k definování všeho v určité syntaxi a příkaz docker build se používá k vygenerování obrázku z něj.
Vytvořit Dockerfile
touch Dockerfile
nano Dockerfile or gedit Dockerfile
# This is the base image we will use to create our custom docker image
FROM ubuntu:latest
#
# the maintainer of an image
LABEL maintainer="[email protected]"
#
# Install the tools (sudo)
RUN apt-get update && apt-get upgrade -y && apt install sudo tasksel -y
Ve třetí části jsme použili štítek RUN, který je označen „Install the tools“ a jakýkoli příkaz po RUN bude proveden před vygenerováním našeho vlastního obrázku. Takže zadáním příkazu zde můžeme nainstalovat libovolný balíček, který si přejeme. Pokud budeme pokračovat v psaní příkazů, můžeme dokonce roztočit celý server.
Další informace o Dockerfile naleznete v oficiální dokumentaci dockeru.
Uložte a zavřete Dockerfile. Nyní otevřete příkazový řádek a přejděte do adresáře obsahujícího Dockerfile a spusťte následující příkaz –
sudo docker build -t image-name:tag .
Změňte image-name:tag s libovolným jménem a jmenovkou, kterou si přejete.
unable to prepare context: context must be a directory: /home/sandy/Dockerfile
. Takže musíte být v adresáři obsahujícím Dockerfile a použít . k zadání aktuálního adresáře nebo úplné cesty k adresáři obsahujícímu Dockerfile.
A to je vše. docker build
začne sestavovat příkaz. Bude to trvat několik sekund. Po dokončení se náš vlastní obrázek dockeru uloží do místní mezipaměti obrázků. Nyní můžeme použít image-name:tag k vytvoření kontejneru dockeru, který má předinstalované sudo.