Если раньше я недолюбливал использование Docker в работе, в тесте, то я был глубоко не прав, тестирование, установка сервисов под которую отдельно выделяется виртуальная машина на Proxmox 6, или ESXi 6,7 — это не рациональная экономия ресурсов, потому как сервис от версии к версии тянут за собой и различные версии библиотек, пакетов — и что под каждую версию создавать или через PXE устанавливать операционную систему. Это трата времени. Лучше задействовать такие технологии, как Docker.

Ранее когда я хотел разобрать ну или иную настройку или работу в связке с другим сервисом мне приходило выполнять следующую последовательность шагов:

  • Установка операционной системы под Virtualbox, поумнел перешел на VMware ESXi, после на Proxmox
  • Настройка операционной системы
  • Установка сервиса
  • Преднастройка сервиса
  • Подготовка сервиса перед дальнейшими действиями кои и были задуманы

Это все долго, даже с учетом написанных пошаговых заметок и не каждый может их повторить хоть и документирую от и до. Нужно квалификация, а не бездумное копирование, смотреть что у Вас и что у меня.

Вот сейчас я для себя составлю пошаговую заметку, как же сперва установить Docker на Ubuntu 22.04 Server.

Шаг №1: На тестовом полигоне (Debian 10 + Proxmox 6) поднята виртуальная машина с осью Ubuntu 22.04 Server на которую я и буду устанавливать Docker.

ekzorchik@srv-us2204a:~$ uname -a && lsb_release -a

Linux srv-us2204a 5.15.0-27-generic #28-Ubuntu SMP Thu Apr 14 04:55:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 22.04 LTS

Release: 22.04

Codename: jammy

ekzorchik@srv-us2204a:~$

Шаг №2: Устанавливаю репозитарий Docker и ставлю самую последнюю версию Docker:

На заметку:

Системные требования:

Docker работает только на 64-битной архитектуре

ekzorchik@srv-us2204a:~$ sudo apt-get install apt-transport-https ca-certificates curl -y

ekzorchik@srv-us2204a:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).

OK

ekzorchik@srv-us2204a:~$

ekzorchik@srv-us2204a:~$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu jammy stable"

ekzorchik@srv-us2204a:~$ apt-cache search docker-ce

docker-ce-cli - Docker CLI: the open-source application container engine

docker-ce-rootless-extras - Rootless support for Docker.

docker-ce - Docker: the open-source application container engine

ekzorchik@srv-us2204a:~$ apt-cache show docker-ce | grep Version

Version: 5:20.10.15~3-0~ubuntu-jammy

Version: 5:20.10.14~3-0~ubuntu-jammy

Version: 5:20.10.13~3-0~ubuntu-jammy

ekzorchik@srv-us2204a:~$ sudo apt-get install -y docker-ce

Шаг №3: Проверяю, что сервис Docker запущен на системе:

ekzorchik@srv-us2204a:~$ sudo systemctl status docker | head -n5

● docker.service - Docker Application Container Engine

Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)

Active: active (running) since Tue 2022-05-10 10:05:29 MSK; 20s ago

TriggeredBy: ● docker.socket

Docs: https://docs.docker.com

ekzorchik@srv-us2204a:~$

Шаг №4: Чтобы можно было управлять Docker не от имени суперпользователя:

ekzorchik@srv-us2204a:~$ cat /etc/group | grep docker

docker:x:999:

ekzorchik@srv-us2204a:~$ sudo usermod -aG docker ${USER}

ekzorchik@srv-us2204a:~$ cat /etc/group | grep docker

docker:x:999:ekzorchik

ekzorchik@srv-us2204a:~$

и чтобы изменения увидеть я вижу два способа:

Способ №1:

ekzorchik@srv-bionic:~$ su - ${USER}

Password:

ekzorchik@srv-bionic:~$

Способ №2: Cделать Logoff/Logon (я предпочитаю этот способ)

ekzorchik@srv-us2204a:~$ exit

logout

Connection to 172.33.33.127 closed.

ekzorchik@navy:~$ ssh -l ekzorchik 172.33.33.127

На заметку: Команда docker принимает ряд опций и команд с аргументами. Базовый синтаксис имеет такой вид:

docker [option] [command] [arguments]

Шаг №5: Отобразить системную информацию о Docker:

ekzorchik@srv-us2204a:~$ docker info

Client:

Context: default

Debug Mode: false

Plugins:

app: Docker App (Docker Inc., v0.9.1-beta3)

buildx: Docker Buildx (Docker Inc., v0.8.2-docker)

scan: Docker Scan (Docker Inc., v0.17.0)

Server:

Containers: 0

Running: 0

Paused: 0

Stopped: 0

Images: 0

Server Version: 20.10.15

Storage Driver: overlay2

Backing Filesystem: extfs

Supports d_type: true

Native Overlay Diff: true

userxattr: false

Logging Driver: json-file

Cgroup Driver: systemd

Cgroup Version: 2

Plugins:

Volume: local

Network: bridge host ipvlan macvlan null overlay

Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog

Swarm: inactive

Runtimes: runc io.containerd.runc.v2 io.containerd.runtime.v1.linux

Default Runtime: runc

Init Binary: docker-init

containerd version: 212e8b6fa2f44b9c21b2798135fc6fb7c53efc16

runc version: v1.1.1-0-g52de29d

init version: de40ad0

Security Options:

apparmor

seccomp

Profile: default

cgroupns

Kernel Version: 5.15.0-27-generic

Operating System: Ubuntu 22.04 LTS

OSType: linux

Architecture: x86_64

CPUs: 2

Total Memory: 1.931GiB

Name: srv-us2204a

ID: LJLR:23TE:MKZG:ABKQ:B7KL:AJC4:PTYS:VPO3:CUYB:64CS:QOZR:BWV4

Docker Root Dir: /var/lib/docker

Debug Mode: false

Registry: https://index.docker.io/v1/

Labels:

Experimental: false

Insecure Registries:

127.0.0.0/8

Live Restore Enabled: false

ekzorchik@srv-us2204a:~$

Шаг №6: Проверяю есть ли образ Domoticz (Система построения умного дома) в репозитарии Docker Hub:

ekzorchik@srv-us2204a:~$ docker search domoticz | grep 'Open Source'

domoticz/domoticz Open Source Home Automation System 22

ekzorchik@srv-us2204a:~$

Образ присутствует.

Шаг №7: Инициирую загрузку образа Domoticz из Docker Hub:

ekzorchik@srv-us2204a:~$ docker run domoticz

Unable to find image 'domoticz:latest' locally

docker: Error response from daemon: pull access denied for domoticz, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.

See 'docker run --help'.

ekzorchik@srv-us2204a:~$

Ага, как же, нужно на Docker Hub зарегистрироваться. Регистрируюсь на https://hub.docker.com/signup

  • Docker ID: ekzorchik
  • Email: <USERACCOUNT>@ekzorchik.ru
  • Password: PASSWORD

Теперь подключаюсь к репозитарию Docker Hub использую созданный аккаунт:

ekzorchik@srv-us2204a:~$ docker login -u ekzorchik -p PASSWORD

WARNING! Using --password via the CLI is insecure. Use --password-stdin.

WARNING! Your password will be stored unencrypted in /home/ekzorchik/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

ekzorchik@srv-us2204a:~$

ekzorchik@srv-us2204a:~$ cat .docker/config.json 
{
	"auths": {
		"https://index.docker.io/v1/": {
			"auth": "ZWt6b3JjaGlrOjYxMm1iZGRyQA=="
		}
	}
}

Возвращаюсь к команде получения образа Domoticz:

ekzorchik@srv-us2204a:~$ docker pull domoticz/domoticz

Using default tag: latest

latest: Pulling from domoticz/domoticz

4be315f6562f: Pull complete

d22693aef160: Pull complete

868aceac8b75: Pull complete

b962e5ab773a: Pull complete

be253932ae11: Pull complete

Digest: sha256:22e7f34a2d1c834e6e85bcd791dd60e8219651016f1a453558930c00c3f7dac9

Status: Downloaded newer image for domoticz/domoticz:latest

docker.io/domoticz/domoticz:latest

ekzorchik@srv-us2204a:~$

Отлично, образ загружен на текущую локальную систему.

Шаг №8: Отобразить какие образы загружены и присутствуют в системе:

ekzorchik@srv-us2204a:~$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

domoticz/domoticz latest 69bf4969fd5f 2 weeks ago 348MB

ekzorchik@srv-us2204a:~$

Шаг №9: По аналогии выше произведем поиск образа ubuntu

ekzorchik@srv-us2204a:~$ docker search ubuntu

Шаг №10: Загрузить образ с именем ubuntu на Ваш компьютер:

ekzorchik@srv-us2204a:~$ docker pull ubuntu

Using default tag: latest

latest: Pulling from library/ubuntu

125a6e411906: Pull complete

Digest: sha256:26c68657ccce2cb0a31b330cb0be2b5e108d467f641c62e13ab40cbec258c68d

Status: Downloaded newer image for ubuntu:latest

docker.io/library/ubuntu:latest

ekzorchik@srv-us2204a:~$

Шаг №11: Запускаем образ с именем ubuntu на Вашем компьютере:

ekzorchik@srv-us2204a:~$ docker run ubuntu

Шаг №12: Увидеть какие образа загружены на Вашем компьютере:

ekzorchik@srv-us2204a:~$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

ubuntu latest d2e4e1f51132 10 days ago 77.8MB

domoticz/domoticz latest 69bf4969fd5f 2 weeks ago 348MB

ekzorchik@srv-us2204a:~$

Шаг №13: Запуск интерактивного контейнера для образа ubuntu:

ekzorchik@srv-us2204a:~$ docker run -it ubuntu /bin/bash

root@e96d2b10158b:/# uname -a

Linux e96d2b10158b 5.15.0-27-generic #28-Ubuntu SMP Thu Apr 14 04:55:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

root@e96d2b10158b:/#

root@e96d2b10158b:/# cat /etc/issue

Ubuntu 22.04 LTS \n \l

Шаг №14: Чтобы выйти из контейнера: exit или Ctrl+D

root@e96d2b10158b:/# exit

exit

ekzorchik@srv-us2204a:~$

Шаг №15: Отобразить список всех Контейнеров если не вышли из предыдущего шага и запущена еще одна консоль:

ekzorchik@srv-us2204a:~$ docker run -it ubuntu /bin/bash

root@b028f05a85ee:/#

ekzorchik@srv-us2204a:~$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

b028f05a85ee ubuntu "/bin/bash" 14 seconds ago Up 13 seconds sweet_rubin

ekzorchik@srv-us2204a:~$

Шаг №16: Зная Контейнер ID выключаю запущенный контейнер:

ekzorchik@srv-us2204a:~$ docker stop b028f05a85ee

b028f05a85ee

ekzorchik@srv-us2204a:~$

Не буду пока захламлять данную пошаговую заметку, как установить Docker на Ubuntu 22.04 Server, первый шаг сделан, дальше буду разбирать и конспектировать настройку работы сервисов которые меня интересуют для самообразования и в конечном итоге перехода из разряда системного администратора в роль Devops Engineer.

На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.