- PVSM.RU - https://www.pvsm.ru -
В прошлой публикации [1] я рассказал как SSHeller помогает быстро и легко развернуть OpenVPN сервер. В версии 1.1.0 был добавлен еще один плагин — Docker.
Хочу сразу предупредить, что если у вас руки заточены под консоль, а управление Docker через командную строку кажется удобным и интуитивно понятным, — не нужно читать дальше, не нужно писать ничего в комментариях, я и так знаю, что SSHeller вам не нужен.
А кому он нужен? В первую очередь разработчикам веб-приложений, а так же всем, кому легко и быстро нужно поднять какой-нибудь сервис, будь то сайт, блог, или импровизированный файлообменник.
Нужен сервер с практически любым современным Linux дистрибутивом. Но, в отличии от OpenVPN, для Docker я бы порекомендовал Debian 9
либо Ubuntu 18.04
. С Fedora
и Centos
дела обстоят чуть хуже, так как требуется ставить больше пакетов, дополнительно настраивать автозапуск, немного иначе построена работа с хранилищем.
Самое главное — это должна быть либо физическая либо виртуальная машина, но никак не контейнер (LXC, OpenVZ не подойдут). И нужен доступ по SSH. В прошлой публикации [1] есть подробное описание, как зарегистрироваться и запустить сервер в DigitalOcean, а в конце — чуть менее подробная инструкция для Linode. Оба этих сервиса предлагают простые машины за $5/месяц и бонусы при регистрации по реферальной ссылке. Для начала этого будет вполне достаточно.
Как только у нас есть IP, логин и пароль к серверу, можно устанавливать SSHeller. Скачать его можно из релизов на GitHub [2], есть версии для macOS, Windows и Linux. После запуска добавляем наш сервер, подключаемся к нему и переходим к плагину Docker.
Если Docker на сервере еще не установлен, сделать это можно нажатием кнопки Install
.
Менее, чем через минуту, завершится установка, откроется отчет, который можно непрочитать и закрыть, а в главном окне будет список контейнеров, томов и форма запуска нового контейнера.
В самом низу рабочей области располагается блок запуска нового контейнера. В нем отображается:
Выбрать можно любой официальный Docker образ и еще несколько дополнительных. Их перечень задается в файле https://github.com/delfer/ssheller/blob/master/plugins/docker-profiles.json [3] и на момент публикации это:
Большинство контейнеров будут игнорировать содержимое поля Password, кроме перечисленных в docker-profiles.json [3] (секция parameters):
Важные особенности:
Полезные советы:
alpine
или latest-alpine
— они работают так же как и обычные, но гораздо быстрее загружаются за счет меньшего весаfpm
вам, скорее всего, не нужен, а нужен apache
Дополнительная информация
После нажатия на кнопку RUN
, как только контейнер будет запущен, появится окно с отчетом, в котором будет указана выполненная команда docker run
. Она расскажет много интересного о том, как все на самом деле устроено.
Если вы запускаете несколько контейнеров с веб-интерфейсом, например WordPress и NextCloud, и хотите, чтобы доступ к ним бы не через указание IP и порта, а по доменному имени, то нужно выпонить два простых условия:
Т.е. если, например, у вас есть домен example.com, то нужно добавить в него запись *
типа A
и указать IP сервера. В таком случае, запущенный контейнер worpdress будет доступен по адресу http://wordpress.example.com [4]
А если домена нет — не проблема, можно воспользоваться сервисом nip.io [5] — не нужно ни регистрироваться, ни добавлять записи. Если, например, у вашего сервера IP 172.104.129.183, и на нем запущены jwilder/nginx-proxy и nextcloud, то последний будет доступен по адресу http://nextcloud.172.104.129.183.nip.io [6]
Часто бывает, например, что один контейнер файлы публикует (nginx), а второй — загружает (panubo/vsftpd). Или второй нужен чтобы посмотреть/скачать содержимое первого.
Например, Jenkins после запуска спрашивает пароль, записанный в файле.
jenkins_var_jenkins_home
admin
и пароль из п. 3
Также бывает нужно из одного контейнера подключаться к другому. Например wordpress при установке попросит указать параметры подключения к базе данных: адрес сервера (host) и порт.
localhost
для взаимодействия между контейнерами работать не будет.
В общем случае, нужно указывать внешний IP адрес сервера и порт, отображенный
перед стрелкой (->
) в списке контейнеров. Для простоты, добавлена возможность вместо IP адреса сервера указывать просто слово host
.
Кроме MySQL, может пригодиться PostgreSQL, MongoDB, Redis, memcached, Tomcat, InfluxDB, CouchDB и т.п..
nginx_usr_share_nginx_html
Теперь можно зайти на http://<адрес сервера>:8000 [8], чтобы загружать файлы с авторизацией, а через http://<адрес сервера> [9] будут доступны прямые ссылки. Нужно только указать полный путь к файлу.
db
admin
host
webdevops-php-apache-dev_app
Теперь можно загрузить .php
файлы на ftp://<адрес сервера> [10] и запустить их, перейдя по адресу http://<адрес сервера> [9]
Далеко не все контейнеры доступны в приложении, а некоторые из доступных — не работают без дополнительных настроек — редактируйте файл [3] на GitHub и присылайте свои Pull Request'ы. Если не знаете как — открывайте Issue [11]. Этим вы поможете развитию проекта.
Другие способы поддержать проект, а так же множество полезной информации — в файле README [12].
Автор: delfer
Источник [13]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/282454
Ссылки в тексте:
[1] прошлой публикации: https://habr.com/post/371475/
[2] релизов на GitHub: https://github.com/delfer/ssheller/releases
[3] https://github.com/delfer/ssheller/blob/master/plugins/docker-profiles.json: https://github.com/delfer/ssheller/blob/master/plugins/docker-profiles.json
[4] http://wordpress.example.com: http://wordpress.example.com
[5] nip.io: http://nip.io
[6] http://nextcloud.172.104.129.183.nip.io: http://nextcloud.172.104.129.183.nip.io
[7] http://coderaiser-cloudcmd: http://coderaiser-cloudcmd.%3C%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%3E
[8] http://<адрес сервера>:8000: http://%3C%D0%B0%D0%B4%D1%80%D0%B5%D1%81%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0%3E:8000
[9] http://<адрес сервера>: http://%3C%D0%B0%D0%B4%D1%80%D0%B5%D1%81%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0%3E
[10] ftp://<адрес сервера>: https://www.pvsm.ruftp://%3C%D0%B0%D0%B4%D1%80%D0%B5%D1%81%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0%3E
[11] Issue: https://github.com/delfer/ssheller/issues
[12] README: https://github.com/delfer/ssheller#ssheller
[13] Источник: https://habr.com/post/413743/?utm_campaign=413743
Нажмите здесь для печати.