Blame

1aa411 Mayekkuzu 2025-04-03 17:56:01 1
# Docker
2
cbcdf9 Mayekkuzu 2025-04-03 18:00:31 3
![](./docker.png)
4
5
**Docker** - платформа для разработки, доставки и запуска контейнерных приложений. Именно что приложений. Потому как отличие от виртуальной машины - отсутствие надобности под приложение разворачивать целую виртуальную машину. К примеру Zabbix можно установить внутри виртуальной машины, а можно запустить несколько контейнеров (Zabbix Server + PostgreSQL) и бонусом еще веб-сервер Nginx с сайтиком. И все это будет в рамках одной виртуалки/bare metal тачки. Сами приложения называются образами, найти их можно на DockerHub если готовые и изготовить самому, если есть необходимость. Одни плюсы.
1aa411 Mayekkuzu 2025-04-03 17:56:01 6
7
Из минусов - конечно же пользователи которые суют все на свете в докер без особых на то причин, но это уже другое психическое отклонение. Или же - подготовка приложений к работе в K8s. В любом случае в условиях малых ресурсов организация инфраструктуры в docker-контейнерах позволяет более компактно и щадяще к ресурсам собрать свои сервисы и особо не замарачиваться.
8
cbcdf9 Mayekkuzu 2025-04-03 18:00:31 9
Работает исключительно на nix-системах. Наличие версии Docker-Desktop для Windows подразумевает установку Linux в Hyper-V/WSL. На MacOS таких приколов, очевидно, нет.
10
1aa411 Mayekkuzu 2025-04-03 17:56:01 11
## Установка Docker (или Docker-Compose) в Ubuntu/Debian
12
13
Официальная документация гласит:
14
15
```bash
16
sudo apt-get update
17
sudo apt-get install ca-certificates curl
18
sudo install -m 0755 -d /etc/apt/keyrings
19
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
20
sudo chmod a+r /etc/apt/keyrings/docker.asc
21
22
# Add the repository to Apt sources:
23
echo \
24
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
25
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
26
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
27
sudo apt-get update
28
```
29
30
Не официальная (лично моя). Просто ставим пакет docker-compose. Из минусов - может быть старая версия, если принципиально нужна самая новая, см. выше:
31
```bash
32
sudo apt install docker-compose
33
```
34
Таким образом быстро и без пердолинга мы установили докер
35
36
## Даем пользователю права запуска docker
37
38
По умолчанию docker без sudo вы не запустите. Для решения проблемы пишем:
39
```bash
40
sudo usermod -aG docker username
41
```
42
43
После чего нужно перелогиниться в систему.
f79456 Mayekkuzu 2025-05-15 08:51:54 44
## Проброс видеокарты Nvidia в контейнер Ubuntu/Debian
45
46
Необходимо добавить репозиторий. Nvidia советует использовать такой метод.
47
```bash
48
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
49
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
50
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
51
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
52
```
53
54
Далее включаем экспериментальные пакеты и установим
55
```bash
56
sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
57
sudo apt-get update
58
sudo apt-get install -y nvidia-container-toolkit
59
```
60
61
Генерируем конфигурационный фаил
62
```bash
63
sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
64
```
65
66
Убедимся что видеокарта получила идентификатор
67
```bash
68
root@exclusion-watch:~# nvidia-ctk cdi list
69
INFO[0000] Found 3 CDI devices
70
nvidia.com/gpu=0
71
nvidia.com/gpu=GPU-ec7e5c60-b699-86c7-39da-e61db1767de2
72
nvidia.com/gpu=all
73
```
74
75
Ставим рантайм по умолчанию и рестартим сервис докер
76
```bash
77
sudo nvidia-ctk runtime configure --runtime=docker --set-as-default
78
sudo systemctl restart docker
79
```
80
81
Теперь если необходимо пробросить карточку то ознакомьтесь с примером docker-compose
82
```yaml
83
...
84
transcoder-nvidia:
85
<<: *transcoder-base
86
deploy:
87
resources:
88
reservations:
89
devices:
90
- capabilities: [gpu]
91
driver: nvidia
92
device_ids:
93
- nvidia.com/gpu=0
94
```