Як встановити Docker на VPS
Однією з переваг використання Docker є простота його встановлення та розгортання. Під час запиту нового образу автоматично буде встановлено всі програми та залежності, які необхідні для запуску контейнера.
Для встановлення потрібен VPS зі встановленою операційною системою Ubuntu;
Встановлення Docker
Завантажуємо скрипт встановлення Docker
curl -fsSL https://get.docker.com -o install-docker.shПеревіряємо роботу завантаженого скрипта
sh install-docker.sh --dry-runЗапускаємо встановлення Docker від root користувача
sudo sh install-docker.shПеревіряємо версію встановленого клієнта і сервера Docker
docker versionДля перегляду інформації про запущені контейнери, кількість образів, обсяг доступної пам'яті тощо виконуємо команду:
docker infoТермінологія
- Image — образ контейнера, який є вихідним кодом програми.
- Container — запущений image. Може бути кілька контейнерів, які запускають один і той самий образ.
Запуск контейнера
Для запуску контейнера використовується команда container run. Для прикладу запускаємо контейнер nginx сервера.
# docker container run --publish 80:80 --detach nginx
66c3a1547713516fdc82063b6948573df0ad873f08671deadc9495ca93d45870Команда docker container run виконує такі дії:
- Якщо запитаного образу немає на локальній машині (у нашому випадку на VPS), то його автоматично буде завантажено з репозиторію Docker Hub.
- Запускає новий контейнер на підставі образу nginx.
- Параметр --publish 80:80 відкриває 80 порт на VPS і весь трафік із цього порту перенаправляє на 80 порт контейнера. Якщо 80 порт уже використовується, то можна вказати інший порт для перенаправлення в контейнер, наприклад --publish 8080:80. У такому разі для перевірки роботи потрібно буде вказати в браузері IP_VPS:8888
- Параметр --detach запускає контейнер у фоновому режимі, щоб ви могли користуватися далі консоллю, в якій ви його запустили.
Команда повертає унікальний код контейнера, який буде використовуватися для управління контейнером.
Перевіряємо роботу встановленого контейнера вказавши в браузері IP адресу сервера.
Подивимося список запущених контейнерів:
# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
66c3a1547713 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, [::]:80->80/tcp vigorous_jenningsабо ж можна використовувати старий синтаксис
docker psПершим параметром є перші цифри з номером контейнера. Для управління контейнером достатньо вказувати тільки перші кілька цифр ідентифікатора контейнера. Для прикладу зупинимо контейнер вказавши лише першу цифру:
docker container stop 66Перевіряємо, що контейнер зупинено:
# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESПереглянемо всі контейнери, які були запущені раніше, незалежно від того, чи працюють вони зараз:
# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
66c3a1547713 nginx "/docker-entrypoint.…" 8 minutes ago Exited (0) 9 seconds ago vigorous_jennings
ac7493be39e8 nginx "/docker-entrypoint.…" 22 minutes ago Exited (0) 9 minutes ago zealous_pike
0d447342ed45 nginx "/docker-entrypoint.…" 23 minutes ago Exited (0) 22 minutes ago admiring_shawЯк бачимо, щоразу під час виконання docker container run ми запускаємо новий контейнер, якому присвоюється випадкове ім'я, що складається з імені вченого або хакера та прикметника;
Щоб задати своє ім'я контейнеру, використовується параметр --name:
docker container run --publish 80:80 --detach --name ukraine nginxПереглянути логи контейнера ukraine можна виконавши команду
docker container logs ukraineУ випадку з nginx будуть виводитися логи запитів на веб сервер.
Побачити процеси, які запущені в контейнері ukraine:
# docker container top ukraine
UID PID PPID C STIME TTY TIME CMD
root 4174 4151 0 13:04 ? 00:00:00 nginx: master process nginx -g daemon off;
message+ 4238 4174 0 13:04 ? 00:00:00 nginx: worker process
message+ 4239 4174 0 13:04 ? 00:00:00 nginx: worker processВидалити кілька контейнерів можна командою rm, при цьому перерахувавши через пробіл перші цифри ідентифікатора контейнера:
docker container rm 66 ac 0dКоманда видаляє тільки зупинені контейнери, щоб уникнути випадкового видалення контейнера, який працює.
Перегляд конфігурації контейнера docker:
# docker container inspect <ContainerID>Інформація про використання ресурсів запущеними контейнерами
# docker container stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
1821fb0a6ee6 inspiring_gagarin 0.00% 3.168MiB / 5.787GiB 0.05% 99.2kB / 183kB 0B / 12.3kB 3Як зайти в консоль контейнера Docker
Для підключення по SSH до контейнера немає необхідності встановлювати всередину контейнера SSH сервер. Досить запустити його з командою --it (інтерактивний режим) і як аргумент після назви образу вказати bash:
docker container run --it --name proxy nginx bash Якщо в bash виконати команду exit, то ми не тільки вийдемо з контейнера, а й повністю його зупинимо. Це пов'язано з тим, що контейнер працює доти, доки виконується перша запущена контейнером команда, а в цьому випадку це bash. При цьому всі зміни, які ми внесли через консоль у контейнер, залишаються. Наприклад, ми можемо запустити контейнер ubuntu і встановити через консоль mc (Midnight Commander). Після того, як ми вийдемо з контейнера, він зупиниться, але при повторному запуску контейнера mc буде встановлено;
Для запуску консолі в контейнері використовуйте:
docker container start -ai ukraineДля внесення змін у працюючий контейнер можна запустити додатковий процес консолі в працюючому контейнері. За такого підходу при виході з консолі контейнер продовжить працювати;
docker container exec -it ukraine bashРобота з мережею Docker
Перегляд налаштування перекидання портів між сервером і контейнером:
# docker container port ukraine
80/tcp -> 0.0.0.0:80
443/tcp -> 0.0.0.0:443Дізнатися IP-адресу контейнера можна виконавши команду:
docker container inspect --format '{{ .NetworkSettings.IPAddress }}' ukraine