Найти в Дзене
ДзенФорматор

Установка и использование Docker CE на Debian 12 Bookworm.

Оглавление

Перед началом установки Docker у вас должен быть доступ к вашему серверу как у пользователя без права root с привилегиями sudo. Чтобы сделать это следуйте руководству по настройке сервера с Debian 12 Bookworm.

Затем вводим команды в линукс-терминале: # - от ROOTа, $ - от не рут-пользователя.

Шаг 1 – Запустите обновление системы и установите необходимые пакеты для Docker

Во-первых, вам необходимо обновить пакеты APT с помощью приведенной ниже команды:

$ sudo apt update && sudo apt upgrade -y

Затем используйте приведенную ниже команду, чтобы установить необходимые пакеты в Debian 12 для Docker:

$ sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y

Шаг 2 – Добавьте официальный GPG-ключ Docker в Debian 12

На этом этапе вам необходимо добавить ключ GPG для официального репозитория Docker в вашу систему, используя следующие команды:

$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg

Шаг 3 – Настройка репозитория Docker на Debian 12

Здесь вам нужно добавить репозиторий Docker в исходные коды APT с помощью приведенной ниже команды:

$ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Шаг 4 – Как установить Docker на Debian 12?

Наконец, запустите обновление системы и используйте следующую команду, чтобы установить Docker CE последней версии на свой сервер:

$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin -y

Шаг 5 – Как проверить состояние Docker?

Ваша служба Docker CE должна быть включена во время установки в Debian 12. Чтобы проверить это, вы можете выполнить приведенную ниже команду:

$ sudo systemctl status docker

В ваших выходных данных вы должны увидеть:

Output ● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; preset: enabl>
Active:
active (running) since Sat 2023-07-01 08:03:18 EDT; 12s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 2651 (dockerd)
Tasks: 9
Memory: 27.5M
CPU: 579ms
CGroup: /system.slice/docker.service
...

На данный момент у вас есть утилита командной строки docker. В остальной части статьи мы покажем вам, как использовать утилиту командной строки docker в Debian 12.

Шаг 6 – Запускайте команды Docker без sudo !

Команда docker может быть запущена только пользователем root или пользователем из группы docker. Группа Docker создается в процессе установки по умолчанию.

Если вы не хотите использовать sudo для команды docker, вам нужно добавить своего пользователя в группу docker с помощью следующей команды:

$ sudo usermod -aG docker ${USER}

Чтобы применить это изменение, выполните следующую команду:

$ su - ${USER}

Здесь вам будет предложено ввести пароль вашего имени пользователя, чтобы продолжить.

Вы можете подтвердить, что ваш пользователь добавлен в группу docker, с помощью следующей команды:

$ id -nG

В остальной части статьи мы запускаем команды docker от имени пользователя в группе docker. Если вы не хотите этого, не забудьте запускать команды от имени пользователя с правами sudo.

После завершения установки Docker на Debian 12 давайте посмотрим, как работает команда docker.

Шаг 7 – Как использовать утилиту командной строки Docker

Синтаксис команды docker выглядит следующим образом:

$ docker [option] [command] [arguments]

Вы можете просмотреть все доступные подкоманды docker с помощью следующей команды:

$ docker

В выходных данных вы увидите:

Output Common Commands:
run Create and run a new container from an image
exec Execute a command in a running container
ps List containers
build Build an image from a Dockerfile
pull Download an image from a registry
push Upload an image to a registry
images List images
login Log in to a registry
logout Log out from a registry
search Search Docker Hub for images
version Show the Docker version information
info Display system-wide information

Management Commands:
builder Manage builds
buildx* Docker Buildx (Docker Inc., v0.10.5)
compose* Docker Compose (Docker Inc., v2.18.1)
container Manage containers
context Manage contexts
image Manage images
...

Шаг 8 – Как работать с образами Docker на Debian12?

Образ Docker - это переносимый файл, содержащий набор инструкций, указывающих, какие программные компоненты контейнера должны запускаться и как его запускать.

По умолчанию Docker извлекает эти образы из Docker Hub. Любой может разместить свои образы Docker на Docker Hub, поэтому большинство приложений и дистрибутивов Linux, которые вам понадобятся, будут размещены там.

Вы можете проверить, есть ли у вас доступ к Docker Hub, и загрузить изображения из него с помощью следующей команды:

$ docker run hello-world

Ваш результат должен выглядеть следующим образом:

Output Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
719385e32844: Pull complete
Digest: sha256:a13ec89cdf897b3e551bd9f89d499db6ff3a7f44c5b9eb8bca40da20eb4ea1fa
Status: Downloaded newer image for hello-world:latest

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

Найдите доступные образы Docker

Кроме того, вы можете выполнить поиск доступных образов на Docker hub с помощью подкоманды поиска.

Например, выполните поиск образа Debian с помощью следующей команды:

$ docker search debian

В выходных данных вы увидите список изображений, которые вы искали.

Output NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 16114 [OK]
debian Debian is a Linux distribution that's compos… 4706 [OK]
neurodebian NeuroDebian provides neuroscience research s… 100 [OK]
bitnami/debian-base-buildpack Debian base compilation image 2 [OK]
kasmweb/debian-bullseye-desktop Debian Bullseye desktop for Kasm Workspaces 0
mirantis/debian-build-ubuntu-xenial
...

Загрузите образ Docker

Здесь вы можете загрузить официальный образ Debian с помощью следующей команды:

$ docker pull debian

Ваш результат должен быть похож на этот:

Output Using default tag: latest
latest: Pulling from library/debian
bba7bb10d5ba: Pull complete
Digest: sha256:d568e251e460295a8743e9d5ef7de673c5a8f9027db11f4e666e96fb5bed708e
Status: Downloaded newer image for debian:latest
docker.io/library/debian:latest

Список загруженных образов Docker

Чтобы увидеть, какие образы вы загрузили в свою систему, выполните следующую команду:

$ docker images

В ваших выходных данных вы увидите что-то похожее на это:

Output REPOSITORY TAG IMAGE ID CREATED SIZE
debian latest 49081a1edb0b 2 weeks ago 116MB
hello-world latest 9c7a54a9a43c 8 weeks ago 13.3kB

Шаг 9 – Как запустить контейнер Docker на Debian 12?

Контейнеры могут быть лучшей заменой виртуальным машинам. Контейнеры разделяют исполнительные среды и совместно используют ядро операционной системы.

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

$ docker run -it debian

Примечание: -это переключает и предоставляет вам интерактивный доступ оболочки к контейнеру.

Вы увидите эту форму в своих выходных данных:

Output root@70c3b825b259:/#

Важное примечание: запомните идентификатор контейнера. Здесь идентификатор контейнера 70c3b825b259.

Теперь вы можете запускать любую команду в своем контейнере без sudo, потому что вы выполняете команды в контейнере как пользователь root.

Обновите пакеты внутри контейнера с помощью следующей команды:

root@70c3b825b259:/# apt update

Теперь вы можете установить любое приложение, которое захотите. Например, мы устанавливаем Apache:

root@70c3b825b259:/# apt install apache2

Когда установка Apache будет завершена, убедитесь, что Apache установлен, с помощью следующей команды:

root@70c3b825b259:/# apache2 -v

Output Server version: Apache/2.4.57 (Debian)
Server built: 2023-04-13T03:26:51

Примечание: Любые изменения, которые вы вносите внутри контейнера, применяются только к этому контейнеру.

Чтобы выйти из контейнера, введите exit:

root@70c3b825b259:/# exit

Список активных контейнеров Docker

Чтобы просмотреть активные контейнеры, выполните следующую команду:

$ docker ps

Output CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Вы запустили два контейнера из этой статьи. Но они не активированы.

Чтобы просмотреть все контейнеры, как активные, так и неактивные, выполните следующую команду:

$ docker ps -a

Output CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
70c3b825b259 debian "bash" 3 minutes ago Exited (130) About a minute ago boring_goodall
11b7515a7b34 hello-world "/hello" 10 minutes ago Exited (0) 10 minutes ago sweet_elbakyan

Кроме того, вы можете просмотреть последний контейнер, созданный вами с помощью следующей команды:

$ docker ps -l

Output CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
70c3b825b259 debian "bash" 4 minutes ago Exited (130) About a minute ago boring_goodall

Управление контейнерами Docker

Вы можете запускать и останавливать контейнер с помощью идентификатора контейнера или имени контейнера.

Здесь мы запускаем контейнер на базе Debian с идентификатором:

$ docker start 70c3b825b259

Теперь вы можете проверить состояние, чтобы увидеть, активен ли ваш контейнер:

$ docker ps

Output CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
70c3b825b259 debian "bash" 5 minutes ago Up 9 seconds boring_goodall

Здесь вы можете остановить контейнер. Теперь мы используем имя контейнера, чтобы остановить его:

$ docker stop boring_goodall

Также вы можете удалить контейнер с идентификатором контейнера или именем контейнера. Например, удалите контейнер hello-world с его именем с помощью следующей команды:

$ docker rm sweet_elbakyan

Контейнеры можно превратить в образы, которые можно использовать для создания новых контейнеров.

Давайте посмотрим, как это работает.

Шаг 10 – Как преобразовать контейнеры Docker в образы Docker?

После установки Apache внутри контейнера Debian в Debian 12 у вас теперь есть контейнер, работающий от образа, но контейнер отличается от образа, который вы использовали для его создания. Но позже вы, возможно, захотите снова использовать этот контейнер Apache в качестве основы для новых образов.

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

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

Например:

$ docker commit -m "install Apache" -a "olivia" 70c3b825b259 olivia/debian-apache

Теперь ваш новый образ сохранен в вашей системе.

Перечислите образы docker с помощью следующей команды:

$ docker images

В выходных данных вы увидите новый образ:

Output REPOSITORY TAG IMAGE ID CREATED SIZE
olivia/debian-apache latest 118327ea7c75 10 seconds ago 252MB
debian latest 49081a1edb0b 2 weeks ago 116MB
hello-world latest 9c7a54a9a43c 8 weeks ago 13.3kB

Примечание: Разница в размере отражает внесенные изменения.

На этом этапе вы можете поделиться новым образом с другими пользователями, чтобы они могли создавать из него контейнеры.

Шаг 11 – Как предоставить общий доступ к образам Docker в репозитории Docker?

После создания нового образа на основе существующего образа в Debian 12 вы можете поделиться им с другими пользователями в Docker Hub или других репозиториях Docker, к которым у вас есть доступ.

Сначала вам необходимо создать учетную запись на Docker Hub.

Затем войдите в свой Docker Hub, чтобы загрузить свой образ с помощью следующей команды:

$ docker login -u docker-registry-username

Вам будет предложено ввести свой пароль Docker Hub.

Примечание: Если ваше имя пользователя в реестре Docker отличается от локального имени пользователя, которое вы использовали для создания образа, вам придется пометить свое изображение именем пользователя в реестре.

Например:

$ docker tag olivia/debian-apache docker-registry-username/debian-apache

Затем нажмите на свое собственное изображение с помощью следующей команды:

$ docker push docker-registry-username/docker-image-name

Завершение процесса загрузки изображений может занять некоторое время.

После загрузки образа в реестр он должен быть указан на панели управления вашей учетной записи.

Примечание: Если попытка отправки приводит к ошибке, войдите в систему снова и повторите попытку отправки. Затем убедитесь, что он существует на странице вашего репозитория Docker Hub