Створіть Docker Swarm на Alpine Linux 3.9.0

Вступ

Цей посібник покаже вам, як створити та налаштувати рій Docker за допомогою кількох серверів Alpine Linux 3.9.0 і Portainer. Зверніть увагу, що Vultr пропонує додаток Docker одним кліком, який наразі підтримує CentOS 7 x64 і Ubuntu 16.04 x64.

Передумови

Для початку вам знадобиться щонайменше два сервери VC2 під керуванням Alpine Linux 3.9.0. У вашій групі Docker один із цих серверів діятиме як manager nodeінтерфейс із зовнішніми мережами та делегування завдань робочим вузлам. Інший сервер тоді діятиме як worker node- виконуючи завдання, делеговані йому вузлом менеджера.

Зауважте, що ви можете запустити більше двох серверів, якщо ваша програма потребує резервування та/або більшої обчислювальної потужності, і кроки, наведені в цьому посібнику, будуть застосовуватися.

Розгортання

Відвідайте інтерфейс розгортання сервера Vultr .

Переконайтеся, що Vultr Cloud (VC2)вкладка вибрана у верхній частині сторінки.

Ви можете вибрати будь-яке розташування з Server Locationрозділу, однак усі сервери повинні бути в одному місці , інакше неможливо буде розгорнути на них рій Docker.

Виберіть ISO Libraryвкладку Server Typeрозділу та виберіть Alpine Linux 3.9.0 x86_64зображення.

Виберіть відповідний варіант із Server Sizeрозділу. У цьому посібнику буде використовуватися SSD-сервер розміром 25 ГБ, але цього може бути недостатньо, щоб задовольнити вимоги до ресурсів вашої програми. Хоча Vultr дозволяє легко оновлювати розмір сервера після його запуску, вам все одно слід уважно розглянути, який розмір сервера потрібен для оптимальної роботи вашої програми.

У Additional Featuresрозділі необхідно вибрати Enable Private Networkingваріант. Хоча інші варіанти не є обов’язковими для виконання цього посібника, вам слід подумати, чи має кожен з них сенс у контексті вашої програми.

Якщо ви раніше ввімкнули цю Multiple Private Networksопцію у своєму обліковому записі, вам потрібно буде вибрати існуючу або створити нову приватну мережу для своїх серверів. Якщо ви не ввімкнули його, ви можете проігнорувати цей розділ. Щоб отримати інформацію про ручне налаштування приватних мереж, перегляньте цей посібник .

Firewall GroupНаразі пропустіть розділ. Лише сервер, який виступає в якості вузла менеджера в зграї Docker, потребуватиме відкритих портів, і це слід налаштувати після розгортання сервера.

У самому низу сторінки ви повинні ввести Server Qtyпринаймні два. Як згадувалося раніше, вам може знадобитися більше двох серверів, але двох достатньо, щоб дотримуватися цього посібника.

Нарешті, у Server Hostname & Labelрозділі введіть значущі та запам’ятовуються імена хостів та мітки для кожного сервера. Для цілей цього посібника ім’я хоста та мітка першого сервера будуть docker-managerі Docker Manager, відповідно - і docker-workerі Docker Workerдля другого відповідно.

Після подвійної перевірки всіх ваших конфігурацій ви можете натиснути Deploy Nowкнопку внизу сторінки, щоб запустити свої сервери.

Встановіть на серверах Alpine Linux 3.9.0

Оскільки ви вибрали ОС з бібліотеки ISO Vultr, вам потрібно буде вручну встановити та налаштувати Alpine Linux 3.9.0 на кожному сервері.

Давши Vultr хвилину або дві, щоб виділити ваші сервери, клацніть піктограму з потрійною крапкою more optionsдля Docker Managerсервера в інтерфейсі керування сервером , а потім виберіть потрібний View Consoleпараметр.

Ви повинні бути перенаправлені на консоль із запитом входу. Якщо ні, зачекайте ще хвилину, поки Vultr завершить розгортання ваших серверів.

У цьому запиті входу введіть rootім’я користувача. У живій версії Alpine Linux 3.9.0 (яка наразі працюють на ваших серверах) не потрібно, щоб суперкористувач вводив пароль під час входу.

Після успішного входу в кореневий обліковий запис ви побачите вітальне повідомлення, за яким слідуватиме підказка оболонки, яка виглядає так:

localhost:~# 

Щоб запустити інсталятор Alpine Linux, введіть таку команду:

# setup-alpine

Спочатку виберіть відповідну розкладку клавіатури. У цьому посібнику буде використовуватися usмакет і варіант.

Встановлюючи ім’я хоста, виберіть те саме ім’я хоста, яке ви встановили для цього сервера під час розгортання. Якщо ви точно дотримувалися цього посібника, ім’я хоста має бути docker-manager.

Повинні бути доступні два мережеві інтерфейси: eth0і eth1. Якщо ви бачите лише eth0, це означає, що ви неправильно налаштували приватну мережу ваших серверів. Initialize , eth0використовуючи dhcp, і форматувати з eth1допомогою приватного IP - адреса, маску підмережі та шлюз цей сервер був призначений під час розгортання. Ви можете отримати доступ до цих деталей з інтерфейсу налаштувань вашого сервера. Коли з’явиться запит, не виконуйте жодних налаштувань мережі вручну.

Введіть новий пароль для облікового запису root, а потім виберіть часовий пояс, відповідний для розташування, у якому ви вибрали для розгортання цих серверів.

Якщо ви збираєтеся використовувати проксі-сервер HTTP/FTP, введіть його URL-адресу, інакше не встановлюйте URL-адресу проксі-сервера.

Виберіть клієнт NTP для керування синхронізацією системного годинника. Цей посібник буде використовувати busybox.

Коли попросять використовувати дзеркало сховища пакетів, виберіть його явно, ввівши його номер; автоматично визначити та вибрати найшвидший, ввівши f; або вручну відредагуйте файл конфігурації репозиторію, ввівши e, що не рекомендується, якщо ви не знайомі з Alpine Linux. У цьому посібнику буде використовуватися перше дзеркало.

Якщо ви плануєте використовувати SSH для доступу до своїх серверів або для розміщення файлової системи на основі SSH, виберіть сервер SSH. Цей посібник буде використовувати openssh.

При запиті диска до використання, вибрати диск в vdaякості sysтипу.

Тепер на вашому сервері має бути встановлено Alpine Linux 3.9.0. Повторіть цей процес для всіх інших серверів, які ви розгорнули раніше, переконавшись, що ви замінили правильні значення для імені хоста та eth1мережевого інтерфейсу.

Конфігурація сервера після встановлення

На даний момент на ваших серверах все ще працює активна версія ISO Alpine Linux 3.9.0. Щоб завантажитися з інсталяції SSD, перейдіть до інтерфейсу налаштувань вашого сервера, перейдіть до пункту Custom ISOбічного меню та натисніть Remove ISOкнопку. Це повинно перезавантажити сервер. Якщо це не так, то перезавантажтеся вручну.

Після завершення перезавантаження сервера поверніться до веб-консолі сервера Docker Manager.

Увійдіть в обліковий запис root, використовуючи пароль, який ви встановили раніше під час процесу встановлення.

Увімкніть сховище пакетів спільноти, розкоментувавши третій рядок /etc/apk/repositoriesвикористання vi. Подібним чином можна ввімкнути сховища краю та тестування, але вони не зобов’язані дотримуватися цього посібника.

Синхронізуйте локальний індекс пакетів сервера з віддаленим сховищем, яке ви вибрали раніше, ввівши таку команду оболонки:

# apk update

Потім оновіть застарілі пакети:

# apk upgrade

Як і раніше, повторіть цей процес налаштування для кожного сервера, який ви розгорнули раніше.

Встановіть Docker на свої сервери

Перш ніж інсталювати сам пакет Docker, ви можете створити окремого dockerкористувача. Ви можете зробити це за допомогою такої команди:

# adduser docker

Примітка. Цей новий користувач і всі користувачі, додані до нової dockerгрупи, матимуть привілеї root після встановлення пакета Docker. Дивіться таку проблему зі сховища Moby Github:

Due to the --privileged in docker, anyone added to the 'docker' group is root equivalent. Anyone in the docker group has a back door around all privilege escalation policy and auditing on the system.

This is different from someone being able to run running sudo to root, where they have policy, and audit applied to them.

Якщо ви хочете надати користувачеві дозвіл sudo docker, спочатку встановіть sudoпакет:

# apk add sudo

Потім створіть sudoгрупу:

# addgroup sudo

Нарешті, додайте dockerкористувача до sudoгрупи:

# adduser docker sudo

Тепер ви можете виконати крок 4 цього посібника, щоб завершити налаштування sudo.

На цьому етапі ви готові встановити пакет Docker. Зауважте, що dockerдля встановлення та налаштування Docker необов’язково мати окремого користувача з можливістю sudo , але цей посібник дотримується цієї конвенції.

Встановіть пакет Docker за допомогою такої команди:

# apk add docker

Потім увімкніть сценарій ініціалізації Docker:

# rc-update add docker

Нарешті, запустіть демон Docker:

# rc-service docker start

Ви можете перевірити, чи працює Docker, за допомогою цієї команди:

# docker info

Як і минулого разу, повторіть цей процес встановлення Docker для кожного сервера, який ви розгорнули на початку.

Ініціалізуйте рій Docker з одним вузлом менеджера та одним робочим вузлом

Вирішивши всі ці налаштування, ви нарешті готові створити рій Docker.

Створіть рій і додайте вузол менеджера

Перейдіть назад до веб-консолі вашого Docker Managerсервера. Ви налаштуєте цей сервер як вузол менеджера у вашому рою. Якщо ви вирішили створити dockerкористувача раніше, увійдіть, використовуючи цей обліковий запис, а не суперкористувач.

Введіть таку команду, але замініть 192.0.2.1її приватною (не загальнодоступною) IP-адресою, призначеною вашому Docker Managerсерверу:

$ docker swarm init --advertise-addr 192.0.2.1

Docker will display a command you can execute on other servers in the private network to add them as worker nodes to this new swarm. Save this command.

Add a worker node

Now navigate to the web console of your Docker Worker server, signing in with the docker user if you created it.

To add this server as a worker node to the swarm you just created, execute the command you saved from the output of the swarm creation command. It will look similar to the following:

$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377

Docker will output whether the node was able to join the swarm. If you encounter issues adding worker nodes to the swarm, double check your private network configuration and refer to this guide for troubleshooting.

If you deployed more than two servers at the beginning, you can add the rest as worker nodes to your swarm using the command above, increasing the amount resources available to your application. Alternatively, you can add additional manager nodes, but that's beyond the scope of this guide.

Deploy Portainer with SSL to manage your Docker swarm

At this point your Docker swarm is ready for use. You may, however, optionally launch a Portainer stack on the manager node in your swarm. Portainer offers a convenient web interface for managing your swarm and the nodes therein.

It's now time to create a firewall group for your swarm. Unless your application specifically requires it, only expose ports on your manager nodes. Exposing ports on your worker nodes without careful consideration can introduce vulnerabilities.

Перейдіть до інтерфейсу керування брандмауером і створіть нову групу брандмауера. Ваша програма має вказувати, які порти надавати, але ви повинні, принаймні, відкрити порт 9000для Portainer. Застосуйте цю групу брандмауера до Docker Managerсервера.

Хоча це не є обов’язковим, настійно рекомендується захистити Portainer за допомогою SSL. Заради цього посібника ви будете використовувати лише самопідписаний сертифікат OpenSSL, але вам слід розглянути можливість використання Let's Encrypt у виробництві.

Перейдіть до веб-консолі Docker Managerсервера, увійдіть за допомогою dockerкористувача та скористайтеся такими командами, щоб створити самопідписаний сертифікат OpenSSL:

$ mkdir ~/certs
$ openssl genrsa -out ~/certs/portainer.key 2048
$ openssl req -new -x509 -sha256 -key ~/certs/portainer.key -out ~/certs/portainer.pem -days 3650

Створіть новий файл ~/portainer-agent-stack.yml, з таким вмістом:

version: '3.2'

services:
  agent:
    image: portainer/agent
    environment:
      AGENT_CLUSTER_ADDR: tasks.agent
      CAP_HOST_MANAGEMENT: 1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
      - /:/host
    networks:
      - agent_network
    deploy:
      mode: global

  portainer:
    image: portainer/portainer
    command: -H tcp://tasks.agent:9001 --tlsskipverify --ssl --sslcert /certs/portainer.pem --sslkey /certs/portainer.key
    ports:
      - target: 9000
        published: 9000
        protocol: tcp
        mode: host
    volumes:
      - portainer_data:/data
      - /home/docker/certs:/certs
    networks:
      - agent_network
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]

networks:
  agent_network:
    driver: overlay
    attachable: true

volumes:
  portainer_data:

Після зміни цього файлу конфігурації стека Docker відповідно до ваших вимог ви можете розгорнути його:

$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer

Щоб переконатися, що Portainer працює, виконайте таку команду, давши Docker хвилину або дві на розгортання стека:

$ docker ps

Ви побачите два контейнери із зображеннями portainer/portainer:latestта portainer/agent:latest, що підтверджує, що Portainer запущено правильно.

Тепер ви можете налаштувати та керувати своїм роєм Docker, відвідавши публічну IP-адресу свого Docker Managerсервера на порту 9000за допомогою HTTPS.


Ось як перевірити контейнери Hyper-V у Windows 10 Insider

Ось як перевірити контейнери Hyper-V у Windows 10 Insider

Microsoft пояснила в новій публікації в блозі, як інсайдери Windows можуть тестувати контейнери Hyper-V на Windows 10, нове рішення віртуалізації, яке дозволяє запускати програми, не впливаючи на решту операційної системи.

Як встановити Harbor на CentOS 7

Як встановити Harbor на CentOS 7

Harbor — це сервер реєстру корпоративного класу з відкритим вихідним кодом, який зберігає та поширює образи Docker. Harbor розширює Docker Distribution з відкритим кодом b

Встановіть ОС Rancher через iPXE

Встановіть ОС Rancher через iPXE

Rancher OS — це дуже легкий дистрибутив Linux, створений на основі Docker. Сама ОС важить близько 20 МБ. Цей підручник допоможе вам почати працювати

На CoreOS налаштуйте власний реєстр Docker

На CoreOS налаштуйте власний реєстр Docker

Ми всі знаємо і любимо Docker, платформу для створення, керування та розподілу контейнерів програм на кількох машинах. Docker Inc. надає послугу t

Встановлення docker-compose на CoreOS

Встановлення docker-compose на CoreOS

У цій статті пояснюється, як встановити docker-compose на CoreOS. У CoreOS папка /usr/ є незмінною, тому стандартний шлях /usr/local/bin недоступний для

Встановіть Rancher на CentOS 7

Встановіть Rancher на CentOS 7

Використання іншої системи? Вступ Rancher — це платформа з відкритим кодом для роботи з контейнерами та створення приватного контейнерного сервісу. Ранчер - це база

Встановіть Docker CE на Ubuntu 18.04

Встановіть Docker CE на Ubuntu 18.04

Вступ Docker — це програма, яка дозволяє нам розгортати програми, які запускаються як контейнери. Він був написаний популярною мовою програмування Go

Створіть Docker Swarm на Alpine Linux 3.9.0

Створіть Docker Swarm на Alpine Linux 3.9.0

Вступ Цей посібник покаже вам, як створити та налаштувати рій Docker за допомогою кількох серверів Alpine Linux 3.9.0 та Portainer. Будь ласка, майте на увазі, що

Розгорніть програму PHP за допомогою Docker-compose

Розгорніть програму PHP за допомогою Docker-compose

Додатки PHP зазвичай складаються з веб-сервера, системи реляційної бази даних і самого інтерпретатора мови. У цьому уроці ми будемо важелем

Баланс навантаження за допомогою Docker

Баланс навантаження за допомогою Docker

Запускаючи веб-програму, ви зазвичай бажаєте максимально використовувати свої ресурси, не перетворюючи програмне забезпечення на використання багатопотокової роботи.

Розгорніть програму Node.js за допомогою Docker

Розгорніть програму Node.js за допомогою Docker

Ця стаття покаже вам, як розгорнути вашу програму Node у контейнері Docker. Примітка. Цей посібник передбачає, що у вас інстальовано та прочитано Docker

Встановлення Docker CE на CentOS 7

Встановлення Docker CE на CentOS 7

Технологія контейнерів Docker дозволяє запускати програми в певному та ізольованому середовищі. Docker Community Edition (CE) — це нова назва для fre

Розгорніть Kubernetes за допомогою Kubeadm на CentOS 7

Розгорніть Kubernetes за допомогою Kubeadm на CentOS 7

Огляд Ця стаття покликана допомогти вам швидко запустити кластер Kubernetes за допомогою kubeadm. У цьому посібнику буде розгорнуто два сервери

Встановлення Docker на CentOS 7

Встановлення Docker на CentOS 7

Використання іншої системи? Docker — це програма, яка дозволяє розгортати програмне забезпечення у віртуальних контейнерах. Це було написано в програмі Go

Встановлення Docker CE на Debian 9

Встановлення Docker CE на Debian 9

Використання іншої системи? Вступ Docker — це програма, яка дозволяє розгортати програмне забезпечення у віртуальних контейнерах. Це було написано в Г

Почніть роботу з SQL Server 2017 (MS-SQL) на CentOS 7 за допомогою Docker

Почніть роботу з SQL Server 2017 (MS-SQL) на CentOS 7 за допомогою Docker

Передумови Docker engine 1.8+. Мінімум 4 Гб дискового простору. Мінімум 4 ГБ оперативної пам’яті. Крок 1. Встановіть Docker Щоб встановити SQL-Server, Docker необхідно

Sticky Session With Docker Swarm (CE) на Debian 9

Sticky Session With Docker Swarm (CE) на Debian 9

Використання іншої системи? Вступ Docker Swarm перетворює ваші окремі сервери в кластер комп'ютерів; полегшення масштабування, висока доступність

Два графічних інструмента керування Docker: DockerUI та Shipyard

Два графічних інструмента керування Docker: DockerUI та Shipyard

За допомогою програми Vultr Docker ви можете легко розгорнути Docker на вашому сервері Vultr. Тим часом ви можете полегшити завдання керування Docker

Встановіть Rancher Server на RancherOS

Встановіть Rancher Server на RancherOS

Огляд RancherOS — це неймовірно легка операційна система (всього близько 60 МБ), яка запускає системний демон Docker як PID 0 для запуску системних служб.

Початок роботи з Kubernetes на CentOS 7

Початок роботи з Kubernetes на CentOS 7

Kubernetes — це платформа з відкритим кодом, розроблена Google для керування контейнерними додатками на кластері серверів. Він спирається на десятиліття і

Повстання машин: застосування ШІ в реальному світі

Повстання машин: застосування ШІ в реальному світі

Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.

DDOS-атаки: короткий огляд

DDOS-атаки: короткий огляд

Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.

Революційні винаходи від Google, які полегшать ваше життя.

Революційні винаходи від Google, які полегшать ваше життя.

Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.

Еволюція зберігання даних – інфографіка

Еволюція зберігання даних – інфографіка

Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.

Функціональні можливості шарів еталонної архітектури великих даних

Функціональні можливості шарів еталонної архітектури великих даних

Прочитайте блог, щоб дізнатися про різні шари архітектури великих даних та їх функціональні можливості найпростішим способом.

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше