GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak nainstalovat a používat Docker na Ubuntu 22.04

Úvod

Docker je aplikace, která zjednodušuje proces správy aplikačních procesů v kontejnerech . Kontejnery vám umožňují spouštět vaše aplikace v procesech s izolovanými zdroji. Jsou podobné virtuálním strojům, ale kontejnery jsou přenosnější, šetrnější ke zdrojům a více závisí na hostitelském operačním systému.

Podrobný úvod k různým komponentám kontejneru Docker najdete v The Docker Ecosystem:An Introduction to Common Components.

V tomto tutoriálu nainstalujete a budete používat Docker Community Edition (CE) na Ubuntu 22.04. Nainstalujete si samotný Docker, budete pracovat s kontejnery a obrázky a vložíte obrázek do úložiště Docker.

Předpoklady

Abyste mohli postupovat podle tohoto návodu, budete potřebovat následující:

  • Jeden server Ubuntu 22.04 nastaven podle průvodce počátečním nastavením serveru Ubuntu 22.04, včetně sudo non-root uživatele a firewall.
  • Účet na Docker Hub, pokud si přejete vytvořit vlastní obrázky a odeslat je do Docker Hub, jak je znázorněno v krocích 7 a 8.

Krok 1 – Instalace Dockeru

Instalační balíček Docker dostupný v oficiálním úložišti Ubuntu nemusí být nejnovější verzí. Abychom zajistili, že získáme nejnovější verzi, nainstalujeme Docker z oficiálního úložiště Docker. Za tímto účelem přidáme nový zdroj balíčku, přidáme klíč GPG z Dockeru, abychom zajistili platnost stažených souborů, a poté balíček nainstalujeme.

Nejprve aktualizujte svůj stávající seznam balíčků:

  1. sudo apt update

Dále nainstalujte několik nezbytných balíčků, které umožní apt používat balíčky přes HTTPS:

  1. sudo apt install apt-transport-https ca-certificates curl software-properties-common

Poté do svého systému přidejte klíč GPG pro oficiální úložiště Docker:

  1. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Přidejte úložiště Docker do zdrojů APT:

  1. echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Aktualizujte svůj stávající seznam balíčků znovu, aby bylo přidání rozpoznáno:

  1. sudo apt update

Ujistěte se, že se chystáte nainstalovat z úložiště Docker namísto výchozího úložiště Ubuntu:

  1. apt-cache policy docker-ce

Uvidíte výstup takto, i když číslo verze pro Docker se může lišit:

Výstup zásady apt-cache docker-ce
docker-ce:
  Installed: (none)
  Candidate: 5:20.10.14~3-0~ubuntu-jammy
  Version table:
     5:20.10.14~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.13~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages

Všimněte si, že docker-ce není nainstalováno, ale kandidát na instalaci pochází z úložiště Docker pro Ubuntu 22.04 (jammy ).

Nakonec nainstalujte Docker:

  1. sudo apt install docker-ce

Nyní by měl být nainstalován Docker, spuštěn démon a povoleno spuštění procesu při spouštění. Zkontrolujte, zda běží:

  1. sudo systemctl status docker

Výstup by měl být podobný následujícímu, což ukazuje, že služba je aktivní a běží:

Output● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-04-01 21:30:25 UTC; 22s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 7854 (dockerd)
      Tasks: 7
     Memory: 38.3M
        CPU: 340ms
     CGroup: /system.slice/docker.service
             └─7854 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Instalací Dockeru nyní získáte nejen službu Docker (démon), ale také docker nástroj příkazového řádku nebo klient Docker. Prozkoumáme, jak používat docker příkaz dále v tomto tutoriálu.

Krok 2 – Provedení příkazu Docker bez sudo (volitelné)

Ve výchozím nastavení docker příkaz lze spustit pouze root uživatelem nebo uživatelem v ukotvitelném panelu skupina, která se automaticky vytvoří během procesu instalace Dockeru. Pokud se pokusíte spustit docker příkaz bez předpony sudo nebo aniž byste byli v dockeru skupině, získáte výstup podobný tomuto:

Outputdocker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.

Pokud se chcete vyhnout psaní sudo kdykoli spustíte docker přidejte své uživatelské jméno do docker skupina:

  1. sudo usermod -aG docker ${USER}

Chcete-li použít nové členství ve skupině, odhlaste se ze serveru a znovu se přihlaste nebo zadejte následující:

  1. su - ${USER}

Budete vyzváni k zadání hesla uživatele, abyste mohli pokračovat.

Potvrďte, že váš uživatel je nyní přidán do dockeru seskupit zadáním:

  1. groups
Outputsammy sudo docker

Pokud potřebujete přidat uživatele do docker skupině, ve které nejste přihlášeni, deklarujte toto uživatelské jméno explicitně pomocí:

  1. sudo usermod -aG docker username

Zbytek tohoto článku předpokládá, že používáte docker příkaz jako uživatel v dockeru skupina. Pokud nechcete, přidejte před příkazy sudo .

Pojďme prozkoumat docker příkaz další.

Krok 3 — Použití příkazu Docker

Pomocí docker spočívá v předání řetězce voleb a příkazů následovaných argumenty. Syntaxe má tento tvar:

  1. docker [option] [command] [arguments]

Chcete-li zobrazit všechny dostupné dílčí příkazy, zadejte:

  1. docker

Od verze Dockeru 20.10.14 , úplný seznam dostupných dílčích příkazů obsahuje:

Output  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Chcete-li zobrazit možnosti dostupné pro konkrétní příkaz, zadejte:

  1. docker docker-subcommand --help

Chcete-li zobrazit systémové informace o Dockeru, použijte:

  1. docker info

Pojďme prozkoumat některé z těchto příkazů. Začneme prací s obrázky.

Krok 4 — Práce s obrázky Docker

Kontejnery Docker jsou vytvořeny z obrazů Docker. Ve výchozím nastavení Docker stahuje tyto obrázky z Docker Hub, registru Docker spravovaného společností Docker, která stojí za projektem Docker. Kdokoli může hostovat své obrázky Docker na Docker Hub, takže většina aplikací a distribucí Linuxu, které budete potřebovat, bude mít obrázky hostované tam.

Chcete-li zkontrolovat, zda můžete přistupovat k obrázkům a stahovat je z Docker Hub, zadejte:

  1. docker run hello-world

Výstup bude indikovat, že Docker funguje správně:

OutputUnable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:bfea6278a0a267fad2634554f4f0c6f31981eea41c553fdf5a83e95a41d40c38
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

...

Docker zpočátku nemohl najít hello-world image lokálně, takže obrázek stáhl z Docker Hub, což je výchozí úložiště. Jakmile se obrázek stáhne, Docker vytvořil kontejner z obrázku a aplikace v kontejneru byla spuštěna a zobrazila zprávu.

Obrázky dostupné na Docker Hub můžete vyhledávat pomocí docker pomocí příkazu search dílčí příkaz. Chcete-li například vyhledat obrázek Ubuntu, zadejte:

  1. docker search ubuntu

Skript projde Docker Hub a vrátí seznam všech obrázků, jejichž název odpovídá vyhledávacímu řetězci. V tomto případě bude výstup podobný tomuto:

OutputNAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                           Ubuntu is a Debian-based Linux operating sys…   14048     [OK]
websphere-liberty                WebSphere Liberty multi-architecture images …   283       [OK]
ubuntu-upstart                   DEPRECATED, as is Upstart (find other proces…   112       [OK]
neurodebian                      NeuroDebian provides neuroscience research s…   88        [OK]
open-liberty                     Open Liberty multi-architecture images based…   51        [OK]
...

V OFFICIAL OK označuje image vytvořenou a podporovanou společností, která za projektem stojí. Jakmile identifikujete obrázek, který chcete použít, můžete si jej stáhnout do počítače pomocí pull dílčí příkaz.

Provedením následujícího příkazu stáhněte oficiální ubuntu obrázek do počítače:

  1. docker pull ubuntu

Uvidíte následující výstup:

OutputUsing default tag: latest
latest: Pulling from library/ubuntu
e0b25ef51634: Pull complete
Digest: sha256:9101220a875cee98b016668342c489ff0674f247f6ca20dfc91b91c0f28581ae
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

Po stažení obrázku můžete spustit kontejner pomocí staženého obrázku pomocí příkazu run dílčí příkaz. Jak jste viděli u hello-world například, pokud nebyl obrázek stažen při docker se provádí pomocí run podpříkaz, klient Docker nejprve stáhne obraz a poté pomocí něj spustí kontejner.

Chcete-li zobrazit obrázky, které byly staženy do počítače, zadejte:

  1. docker images

Výstup bude vypadat podobně jako následující:

OutputREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              1d622ef86b13        3 weeks ago         73.9MB
hello-world         latest              bf756fb1ae65        4 months ago        13.3kB

Jak uvidíte dále v tomto tutoriálu, obrázky, které používáte ke spouštění kontejnerů, lze upravit a použít ke generování nových obrázků, které pak lze nahrát (posunout je technický termín) do Docker Hub nebo jiných registrů Docker.

Podívejme se podrobněji na to, jak spustit kontejnery.

Krok 5 – Spuštění kontejneru Docker

hello-world kontejner, který jste spustili v předchozím kroku, je příkladem kontejneru, který se spustí a ukončí po odeslání testovací zprávy. Kontejnery mohou být mnohem užitečnější a mohou být interaktivní. Koneckonců, jsou podobné virtuálním strojům, jen jsou šetrnější ke zdrojům.

Jako příklad spustíme kontejner pomocí nejnovějšího obrazu Ubuntu. Kombinace -i a -t přepínače vám umožňují interaktivní shell přístup do kontejneru:

  1. docker run -it ubuntu

Příkazový řádek by se měl změnit tak, aby odrážel skutečnost, že nyní pracujete uvnitř kontejneru, a měl by mít tento tvar:

Outputroot@d9b100f2f636:/#

Poznamenejte si ID kontejneru v příkazovém řádku. V tomto příkladu je to d9b100f2f636 . Toto ID kontejneru budete později potřebovat k identifikaci kontejneru, až jej budete chtít odstranit.

Nyní můžete v kontejneru spustit libovolný příkaz. Například aktualizujme databázi balíčků uvnitř kontejneru. Před žádným příkazem nemusíte předponu sudo , protože v kontejneru působíte jako kořen uživatel:

  1. apt update

Poté do něj nainstalujte libovolnou aplikaci. Pojďme nainstalovat Node.js:

  1. apt install nodejs

Tím se nainstaluje Node.js do kontejneru z oficiálního úložiště Ubuntu. Po dokončení instalace ověřte, zda je nainstalován soubor Node.js:

  1. node -v

Číslo verze se zobrazí ve vašem terminálu:

Outputv12.22.9

Jakékoli změny provedené uvnitř kontejneru se vztahují pouze na tento kontejner.

Chcete-li kontejner opustit, zadejte exit na výzvu.

Dále se podíváme na správu kontejnerů v našem systému.

Krok 6 — Správa kontejnerů Docker

Po chvíli používání Dockeru budete mít v počítači mnoho aktivních (spuštěných) a neaktivních kontejnerů. Chcete-li zobrazit aktivní , použijte:

  1. docker ps

Uvidíte výstup podobný následujícímu:

OutputCONTAINER ID        IMAGE               COMMAND             CREATED

V tomto tutoriálu jste spustili dva kontejnery; jeden z hello-world obrázek a další z ubuntu obraz. Oba kontejnery již neběží, ale stále existují ve vašem systému.

Chcete-li zobrazit všechny kontejnery – aktivní i neaktivní, spusťte docker ps pomocí -a přepínač:

  1. docker ps -a

Uvidíte výstup podobný tomuto:

OutputCONTAINER ID   IMAGE         COMMAND   CREATED         STATUS                     PORTS     NAMES
1c08a7a0d0e4   ubuntu        "bash"     About a minute ago   Exited (0) 7 seconds ago             dazzling_taussig
587000e49d53   hello-world   "/hello"   5 minutes ago        Exited (0) 5 minutes ago             adoring_kowalevski

Chcete-li zobrazit nejnovější kontejner, který jste vytvořili, předejte mu -l přepínač:

  1. docker ps -l
OutputCONTAINER ID   IMAGE     COMMAND   CREATED         STATUS                     PORTS     NAMES
1c08a7a0d0e4   ubuntu    "bash"    3 minutes ago   Exited (0) 2 minutes ago             dazzling_taussig

Chcete-li spustit zastavený kontejner, použijte docker start , za kterým následuje ID kontejneru nebo název kontejneru. Začněme kontejner založený na Ubuntu s ID 1c08a7a0d0e4 :

  1. docker start 1c08a7a0d0e4

Kontejner se spustí a můžete použít docker ps abyste viděli jeho stav:

OutputCONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAMES
1c08a7a0d0e4   ubuntu    "bash"    6 minutes ago   Up 8 seconds             dazzling_taussig

Chcete-li zastavit běžící kontejner, použijte docker stop a za ním ID nebo název kontejneru. Tentokrát použijeme název, který Docker kontejneru přidělil, což je dazzling_taussig :

  1. docker stop dazzling_taussig

Jakmile se rozhodnete, že již kontejner nepotřebujete, odeberte jej pomocí docker rm příkaz, opět pomocí ID kontejneru nebo názvu. Použijte docker ps -a příkaz k nalezení ID kontejneru nebo názvu kontejneru spojeného s hello-world obrázek a odstraňte jej.

  1. docker rm adoring_kowalevski

Můžete založit nový kontejner a pojmenovat jej pomocí --name přepínač. Můžete také použít --rm přepnutím vytvoříte kontejner, který se po zastavení sám odstraní. Viz docker run help pro více informací o těchto a dalších možnostech.

Kontejnery lze přeměnit na obrázky, které můžete použít k vytvoření nových kontejnerů. Podívejme se, jak to funguje.

Krok 7 — Odeslání změn v kontejneru do obrázku dockeru

Když spustíte obraz Dockeru, můžete vytvářet, upravovat a odstraňovat soubory stejně jako u virtuálního počítače. Změny, které provedete, se budou vztahovat pouze na tento kontejner. Můžete jej spustit a zastavit, ale jakmile jej zničíte pomocí docker rm příkazu, budou změny navždy ztraceny.

Tato část ukazuje, jak uložit stav kontejneru jako nový obrázek Docker.

Po instalaci Node.js do kontejneru Ubuntu máte nyní kontejner spuštěný s obrazem, ale kontejner se liší od obrazu, který jste použili k jeho vytvoření. Možná však budete chtít později znovu použít tento kontejner Node.js jako základ pro nové obrázky.

Poté změny potvrďte do nové instance obrazu Docker pomocí následujícího příkazu.

  1. docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name

-m switch je pro zprávu odevzdání, která vám i ostatním pomůže zjistit, jaké změny jste provedli, zatímco -a se používá k určení autora. container_id je ten, který jste si poznamenali dříve ve výukovém programu, když jste spustili interaktivní relaci Docker. Pokud jste nevytvořili další úložiště na Docker Hub, repository je obvykle vaše uživatelské jméno Docker Hub.

Například pro uživatele sammy , s ID kontejneru d9b100f2f636 , příkaz by byl:

  1. docker commit -m "added Node.js" -a "sammy" d9b100f2f636 sammy/ubuntu-nodejs

Když se zavážete obrázek, nový obrázek se uloží lokálně ve vašem počítači. Později v tomto tutoriálu se naučíte, jak poslat obrázek do registru Dockeru, jako je Docker Hub, aby k němu měli ostatní přístup.

Opětovným zobrazením obrázků Dockeru se zobrazí nový obrázek i starý obrázek, ze kterého byl odvozen:

  1. docker images

Uvidíte výstup takto:

OutputREPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
sammy/ubuntu-nodejs   latest              7c1f35226ca6        7 seconds ago       179MB
...

V tomto příkladu ubuntu-nodejs je nový obrázek, který byl odvozen z existujícího ubuntu obrázek z Docker Hub. Rozdíl ve velikosti odráží provedené změny. A v tomto příkladu byla změna v tom, že byl nainstalován NodeJS. Takže až budete příště potřebovat spustit kontejner pomocí Ubuntu s předinstalovaným NodeJS, stačí použít nový obrázek.

Můžete také vytvářet obrázky z Dockerfile , která vám umožní automatizovat instalaci softwaru do nového obrazu. To je však mimo rozsah tohoto návodu.

Nyní sdílíme nový obrázek s ostatními, aby z něj mohli vytvářet kontejnery.

Krok 8 – Odeslání obrázků Dockeru do úložiště Docker

Dalším logickým krokem po vytvoření nového obrázku z existujícího obrázku je jeho sdílení s několika vybranými přáteli, celým světem na Docker Hub nebo jiném Docker registru, ke kterému máte přístup. Chcete-li odeslat obrázek do Docker Hub nebo jiného registru Docker, musíte tam mít účet.

Chcete-li odeslat svůj obrázek, nejprve se přihlaste do Docker Hub.

  1. docker login -u docker-registry-username

Budete vyzváni k ověření pomocí hesla Docker Hub. Pokud jste zadali správné heslo, ověření by mělo být úspěšné.

Poznámka: Pokud se vaše uživatelské jméno v registru Docker liší od místního uživatelského jména, které jste použili k vytvoření bitové kopie, budete muset svůj obrázek označit vaším uživatelským jménem v registru. Pro příklad uvedený v posledním kroku byste napsali:

  1. docker tag sammy/ubuntu-nodejs docker-registry-username/ubuntu-nodejs

Potom můžete vložit svůj vlastní obrázek pomocí:

  1. docker push docker-registry-username/docker-image-name

Chcete-li odeslat ubuntu-nodejs obrázek sammy repository, příkaz by byl:

  1. docker push sammy/ubuntu-nodejs

Dokončení procesu může při nahrávání obrázků nějakou dobu trvat, ale po dokončení bude výstup vypadat takto:

OutputThe push refers to a repository [docker.io/sammy/ubuntu-nodejs]
e3fbbfb44187: Pushed
5f70bf18a086: Pushed
a3b5c80a4eba: Pushed
7f18b442972b: Pushed
3ce512daaf78: Pushed
7aae4540b42d: Pushed

...


Po odeslání obrázku do registru by měl být uveden na hlavním panelu vašeho účtu, jako je obrázek níže.

Pokud pokus o push způsobí chybu tohoto druhu, pravděpodobně jste se nepřihlásili:

OutputThe push refers to a repository [docker.io/sammy/ubuntu-nodejs]
e3fbbfb44187: Preparing
5f70bf18a086: Preparing
a3b5c80a4eba: Preparing
7f18b442972b: Preparing
3ce512daaf78: Preparing
7aae4540b42d: Waiting
unauthorized: authentication required

Přihlaste se pomocí docker login a opakujte pokus o zatlačení. Poté ověřte, že existuje na stránce vašeho úložiště Docker Hub.

Nyní můžete použít docker pull sammy/ubuntu-nodejs přetáhněte obrázek do nového počítače a použijte jej ke spuštění nového kontejneru.

Závěr

V tomto kurzu jste nainstalovali Docker, pracovali s obrazy a kontejnery a poslali upravený obraz do Docker Hub. Nyní, když znáte základy, prozkoumejte další výukové programy Docker v komunitě DigitalOcean.


Docker
  1. Jak nainstalovat a používat Docker na Ubuntu 20.04

  2. Jak nainstalovat a používat Wine na Ubuntu 20.04

  3. Jak nainstalovat a používat Docker v Ubuntu 20.04

  1. Jak nainstalovat a používat Docker na Ubuntu 18.04

  2. Jak nainstalovat a používat Docker Compose na Ubuntu 18.04

  3. Jak nainstalovat a používat FFmpeg na Ubuntu 18.04

  1. Jak nainstalovat a používat Wine na Ubuntu 18.04

  2. Jak nainstalovat a používat Curl na Ubuntu 18.04

  3. Jak nainstalovat a používat Curl na Ubuntu 20.04