Если раньше я недолюбливал использование 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.