Warning: Use of undefined constant large - assumed 'large' (this will throw an Error in a future version of PHP) in /var/www/html/wp-content/themes/colormag-child/content-single.php on line 46
Установка и настройка Docker в Linux
Предварительная очистка системы
Согласно документации Docker, следует на всякий случай удалить старые версии Docker, если они есть. Удаляем докер из системы
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package docker-engine
Подключение репозитория Docker
Обновление репозиториев
Hit:1 http://ru.archive.ubuntu.com/ubuntu focal InRelease
Get:2 http://ru.archive.ubuntu.com/ubuntu focal-updates InRelease [107 kB]
Get:3 http://ru.archive.ubuntu.com/ubuntu focal-backports InRelease [98.3 kB]
Get:4 http://ru.archive.ubuntu.com/ubuntu focal-security InRelease [107 kB]
Fetched 312 kB in 9s (36.1 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
Установка GPL ключа
OK
Проверяем наличие ключа в списке
...
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
...
Добавляем репозиторий Docker
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Актуализируем репозитории
sudo apt update
Ищем пакет docker-ce, смотрим в каком репозитории он найден и какой у него приоритет
docker-ce:
Installed: (none)
Candidate: 5:19.03.12~3-0~ubuntu-focal
Version table:
5:19.03.12~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
5:19.03.11~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
5:19.03.10~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
5:19.03.9~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
Установка Docker
Устанавливаем docker-ce
sudo apt install -y docker-ce
Проверяем какая версия установилась
Client: Docker Engine - Community
Version: 19.03.12
API version: 1.40
Go version: go1.13.10
Git commit: 48a66213fe
Built: Mon Jun 22 15:45:44 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.12
API version: 1.40 (minimum version 1.12)
Go version: go1.13.10
Git commit: 48a66213fe
Built: Mon Jun 22 15:44:15 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
Рекомендуется установить ( sudo apt install -y policykit-1 ) фреймворк для управления административными политиками и привилегиями. Это необходимо для того, чтобы в будущем не получить ошибку: Failed to start docker.service: The name org.freedesktop.PolicyKit1 was not provided by any .service files
Настройка Docker
Смотрим статус докера
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-06-25 19:36:15 UTC; 17min ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 21849 (dockerd)
Tasks: 8
Memory: 45.5M
CGroup: /system.slice/docker.service
└─21849 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Jun 25 19:36:14 ubuntu-server dockerd[21849]: time="2020-06-25T19:36:14.994058482Z" level=warning msg="Your kernel does not support cgroup rt runtime"
Jun 25 19:36:14 ubuntu-server dockerd[21849]: time="2020-06-25T19:36:14.994196677Z" level=warning msg="Your kernel does not support cgroup blkio weight"
Jun 25 19:36:14 ubuntu-server dockerd[21849]: time="2020-06-25T19:36:14.994329672Z" level=warning msg="Your kernel does not support cgroup blkio weight_device"
Jun 25 19:36:14 ubuntu-server dockerd[21849]: time="2020-06-25T19:36:14.994656560Z" level=info msg="Loading containers: start."
Jun 25 19:36:15 ubuntu-server dockerd[21849]: time="2020-06-25T19:36:15.172139123Z" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to se>
Jun 25 19:36:15 ubuntu-server dockerd[21849]: time="2020-06-25T19:36:15.327212624Z" level=info msg="Loading containers: done."
Jun 25 19:36:15 ubuntu-server dockerd[21849]: time="2020-06-25T19:36:15.450439116Z" level=info msg="Docker daemon" commit=48a66213fe graphdriver(s)=overlay2 version=19.03.12
Jun 25 19:36:15 ubuntu-server dockerd[21849]: time="2020-06-25T19:36:15.450834302Z" level=info msg="Daemon has completed initialization"
Jun 25 19:36:15 ubuntu-server systemd[1]: Started Docker Application Container Engine.
Jun 25 19:36:15 ubuntu-server dockerd[21849]: time="2020-06-25T19:36:15.516818534Z" level=info msg="API listen on /run/docker.sock"
Назначение прав администратора
Добавляем вашего пользователя в группу Docker для выполнения команд в нем
sudo usermod --append --groups docker itcraper
Меняем id группы docker для упрощения работы с линкованными ресурсами контейнеров
sudo groupmod --gid 1500 docker
Чтобы применить изменения обычно требуется переавторизоваться учетной записью, чтобы изменения вступили в силу. Либо можно выполнить принудительную выполнить регистрацию в новой группе через newgrp
newgrp docker
Проверяем членство в группах
itcraper adm cdrom sudo dip plugdev lxd docker
Перезагружаем сервис Docker, чтобы он запомнил новый GID группы docker
sudo service docker restart
Проверяем наличие прав администратора для работы с Docker. Пробуем посмотреть системную информацию
Client:
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 19.03.12
Storage Driver: overlay2
Backing Filesystem: extfs
...
Данные отображаются, привилегии администратора назначены
Настройка подсети Docker
Смотрим настройки сетевого интерфейса Docker
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:a6:3f:32:18 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Видим, что он использует подсеть: 172.17.0.0/16
Смотрим свою подсеть
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.10.0.10 netmask 255.255.255.0 broadcast 10.10.0.255
ether 00:15:5d:80:01:01 txqueuelen 1000 (Ethernet)
RX packets 150891 bytes 217198776 (217.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 60463 bytes 4182640 (4.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Видим, что подсеть основного интерфейса 10.10.0.0/24 не конфликтует с подсетью интерфейса Docker 172.17.0.0/16
Назначим пул IP адресов 100.100.0.0/24 по умолчанию для подсети Docker
Создаем если еще не создан файл конфигурации Docker /etc/docker/daemon.json и прописываем содержимое
{
"bip": "100.100.0.1/24"
}
Контейнеры Docker будут при создании получать IP адреса из диапазона 100.100.0.2 - 100.100.0.254, а 100.100.0.1 будет использоваться как шлюз. Перезагружаем Docker
sudo systemctl restart docker
Смотрим его статус
sudo systemctl status docker
Проверяем настройки интерфейса Docker
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 100.100.0.1 netmask 255.255.255.0 broadcast 100.100.0.255
ether 02:42:f9:d5:b5:49 txqueuelen 0 (Ethernet)
RX packets 6 bytes 392 (392.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6 bytes 476 (476.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Запуск тестового контейнера и проверка сети
Создадим контейнер для тестов BusyBox и сразу войдем в него. Аргумент --rm позволяет уничтожить контейнер после выхода из него
docker run -it --rm busybox
Выполним пинг в интернет из контейнера
PING ya.ru (87.250.250.242): 56 data bytes
64 bytes from 87.250.250.242: seq=0 ttl=248 time=8.401 ms
64 bytes from 87.250.250.242: seq=1 ttl=248 time=9.031 ms
64 bytes from 87.250.250.242: seq=2 ttl=248 time=9.001 ms
64 bytes from 87.250.250.242: seq=3 ttl=248 time=8.939 ms
--- ya.ru ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 8.401/8.843/9.031 ms