Использование Docker

Содержание

Установка docker

Установить docker можно либо из репозиториев операционной системы, либо из репозиториев разработчиков docker. В первом случае получаем немного устаревшую версию docker, но лучше интегрированную в операционную систему. Во втором случае получаем более свежую версию docker, но в процессе эксплуатации можно столкнуться с какими-либо несостыковками с операционной системой.

Установка из репозиториев операционной системы

Для установки из репозиториев операционной системы можно сразу после настройки репозиториев операционной системы перейти к установке пакетов:

# apt-get update
# apt-get install docker.io docker-compose

Установка из репозиториев разработчиков

Во втором случае необходимо установить в систему ключ репозитория разработчиков системы docker:

# apt-get install ca-certificates
# wget wget https://download.docker.com/linux/debian/gpg -O /etc/apt/keyrings/docker.asc

Добавить в систему новый репозиторий (в данном случае это репозиторий для архитектуры amd64 и операционной системы Debian 12 Bookworm):

# cat > /etc/apt/sources.list.d/docker.list <<END
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian bookworm stable
END

Теперь нужно обновить список пакетов, доступных через настроенные репозитории:

# apt-get update

И можно перейти непосредственно к установке пакетов docker:

# apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Обратите внимание на буквы ce в именах пакетов. Эти буквы означают Community Edition - общедоступную редакцию docker. Также существует ещё и платная редакция, останавливаться на рассмотрении которой здесь не будем.

Выдача прав

Теперь, из какого бы репозитория ни происходила установка, нужно дать пользователю, который будет работать с docker права доступа. Для этого достаточно добавить пользователя в группу docker:

# usermod -aG docker stupin

Для того, чтобы права пользователя вступили в силу, понадобится завершить сеанс пользователя и/или начать новый.

Проверка docker

Для проверки исправности работы системы в различных источниках предлагают запустить один из трёх контейнеров, так или иначе выводящих на экран тестовый текст.

Первый вариант - это вызвать команду echo в контейнере с образом с дистрибутивом Debian внутри:

$ docker run debian echo "Hello World!"
Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
cdd62bf39133: Pull complete 
Digest: sha256:27586f4609433f2f49a9157405b473c62c3cb28a581c413393975b4e8496d0ab
Status: Downloaded newer image for debian:latest
Hello World!

Второй вариант - воспользоваться специально предназначенным для тестирования docker образом, который предлагают сами разработчики docker:

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete 
Digest: sha256:91fb4b041da273d5a3273b6d587d62d518300a6ad268b28628f74997b93171b2
Status: Downloaded newer image for hello-world:latest

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

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Третий вариант предлагается в одном из онлайн-курсов по изучению docker:

$ docker run docker/whalesay cowsay "Hello, World!"
Unable to find image 'docker/whalesay:latest' locally
latest: Pulling from docker/whalesay
Image docker.io/docker/whalesay:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
e190868d63f8: Pull complete 
909cd34c6fd7: Pull complete 
0b9bfabab7c1: Pull complete 
a3ed95caeb02: Pull complete 
00bf65475aba: Pull complete 
c57b6bcc83e3: Pull complete 
8978f6879e2f: Pull complete 
8eed3712d2cf: Pull complete 
Digest: sha256:178598e51a26abbc958b8a2e48825c90bc22e641de3d31e18aaf55f3258ba93b
Status: Downloaded newer image for docker/whalesay:latest
 _______________ 
< Hello, World! >
 --------------- 
    \
     \
      \     
                    ##        .            
              ## ## ##       ==            
           ## ## ## ##      ===            
       /""""""""""""""""___/ ===        
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~   
       \______ o          __/            
        \    \        __/             
         \____\______/

Команды docker

Команды docker для работы с контейнерами:

  • docker ps - вывести список работающих контейнеров,
  • docker ps -a - посмотреть список всех имеющихся в системе контейнеров,
  • docker run <образ> - запуск образа в контейнере, контейнер получает случайные идентификатор и имя,
  • docker run <образ> <команда> - запуск команды в новом контейнере с указанным образом, если внутри образа не определена команда,
  • docker exec <контейнер> <команда> - запуск команды в уже запущеном контейнере,
  • docker -d run <образ> - запуск образа в контейнере, но стандартный ввод, вывод и стандартный поток диагностических сообщений не привязаны к текущему терминалу,
  • docker attach <контейнер> - подключить к текущему терминалу стандартный воод, вывод и стандартный поток диагностических сообщений уже запущенного контейнера,
  • docker stop <контейнер> - остановить работу контейнера,
  • docker rm <контейнер> - удалить контейнер так, что после этой команды контейнер придётся создавать снова, а новый контейнер может получить другие идентификатор и имя,
  • docker images - вывести список имеющихся в системе образов,
  • docker pull <образ> - скачать образ из удалённого реестра или обновить ранее уже скачанный образ,
  • docker rmi <образ> - удалить из системы образ.

Использованные материалы