Задача
В мене є мінімалістичний Linux сервер на хостінгу. Я хочу використовувати його для експериментів і розгортання невеликих сервісів, користуватися якими буду здебільшого я сам.
Оскільки я планую числені експерименти зі встановленням і видаленням сервісів, буду орієнтуватися на їх імплементацію у вигляді Docker контейнерів. Це дозволить захистити базову операційну систему від безладу, а також надасть спосіб перенесення сервісів на інші сервери у разі потреби.
Отже вихідні умови наступні:
сервер: Ubuntu 22.04, CPU 4 core, RAM 6GB, HDD 400GB (340GB free)
доступ: SSH
Задача: встановити Docker Engine (не Desktop), забезпечити можливість оновлення його версій штатними засобами ОС, тобто apt.
Інформаційний пошук
Яку версію Docker Engine всановлювати?
Маючи певний досвід роботи з Ubuntu, перша ідея, яка приходить, це встановити пакунок Docker з тих, що доступні в базових репозиторіях Ubuntu:
chd@REBEL:~$ sudo apt update
chd@REBEL:~$ apt search docker
…
docker.io/jammy-updates 24.0.7-0ubuntu2~22.04.1 amd64
Linux container runtime
…
Схоже, що docker.io – це саме те, що нам потрібно. Остання доступна версія пакунку – 24.0.7.
А яка зараз взагалі найсвіжіша версія Docker Engine?
Іду на сайт https://www.docker.com/.
Developers → Documentation → Manuals → Docker Engine → Release Notes
Бачу, що на сьогодні останньою версією Docker Engine є 27.3. Отже версія 24.0, яку пропонує Ubuntu, є застарілою і мені не підходить.
Як встановити Docker Engine останньої версії?
Зі сторінки огляду Docker Engine переходжу на Install Docker Engine. Пропускаю посилання, пов’язані з Docker Desktop, і знаходжу в таблиці Supported Platforms посилання на інструкцію зі встановлення Docker Engine на Ubuntu.
Встановлення Docker Engine
Попередня чистка системи
Пересвідчимося, що в системі немає вже встановлених пакунків, пов’язаних з docker, containerd, чи runc. Якщо такі є, їх потрібно видалити. В документації для цього пропонуються наступні команди:
chd@REBEL:~$ for pkg in \
docker.io docker-doc docker-compose docker-compose-v2 \
podman-docker containerd runc
do
sudo apt-get remove $pkg
done
Налаштування доступу до репозиторію пакунків
Серед описаних далі способів встановлення обираємо Install using the apt repository.
Налаштування доступу до репозиторію пакунків:
chd@REBEL:~$ sudo apt-get update
…
chd@REBEL:~$ sudo apt-get install ca-certificates curl
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
ca-certificates is already the newest version (20240203~22.04.1).
curl is already the newest version (7.81.0-1ubuntu1.18).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
chd@REBEL:~$ sudo install -m 0755 -d /etc/apt/keyrings
chd@REBEL:~$ sudo curl -fsSL \
https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chd@REBEL:~$ sudo chmod a+r /etc/apt/keyrings/docker.asc
chd@REBEL:~$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# вміст файлу docker.list має бути одним рядком
chd@REBEL:~$ cat /etc/apt/sources.list.d/docker.list
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu jammy stable
chd@REBEL:~$ sudo apt-get update
…
Get:10 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages [40.7 kB]
…
Встановлення пакунків Docker Engine
Встановлення пакунків Docker Engine:
chd@REBEL:~$ sudo apt-get install docker-ce docker-ce-cli \
containerd.io docker-buildx-plugin docker-compose-plugin
…
The following additional packages will be installed:
docker-ce-rootless-extras git git-man libcurl3-gnutls liberror-perl libltdl7 libslirp0 patch pigz slirp4netns
…
The following NEW packages will be installed:
containerd.io docker-buildx-plugin docker-ce docker-ce-cli docker-ce-rootless-extras docker-compose-plugin git git-man libcurl3-gnutls liberror-perl libltdl7 libslirp0 patch pigz
slirp4netns
…
Do you want to continue? [Y/n] y
…
Перевірка працездатності Docker Engine
Стан сервісу docker:
chd@REBEL:~$ systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-10-02 16:25:43 EEST; 2min 50s ago
…
Перевірка версії docker:
chd@REBEL:~$ docker --version
Docker version 27.3.1, build ce12230
Запуск тестового контейнера:
chd@REBEL:~$ sudo 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.
…
chd@REBEL:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a22480e8d2c4 hello-world "/hello" About a minute ago Exited (0) 59 seconds ago quizzical_jang
chd@REBEL:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d2c94e258dcb 17 months ago 13.3kB
Чистка системи після запуску тестового контейнера:
chd@REBEL:~$ sudo docker rm $(sudo docker ps -aq)
a22480e8d2c4
chd@REBEL:~$ sudo docker rmi $(sudo docker images -q)
Untagged: hello-world:latest
Untagged: hello-world@sha256:91fb4b041da273d5a3273b6d587d62d518300a6ad268b28628f74997b93171b2
Deleted: sha256:d2c94e258dcb3c5ac2798d32e1249e42ef01cba4841c2234249495f87264ac5a
Deleted: sha256:ac28800ec8bb38d5c35b49d45a6ac4777544941199075dff8c4eb63e093aa81e
Немає коментарів:
Дописати коментар