在上一篇文章中,我谈到了SSHeller如何帮助您快速轻松地部署OpenVPN服务器。 在1.1.0版中,添加了另一个插件Docker 。
我想立即警告您,如果您在控制台下把手放开,并且通过命令行控制Docker似乎方便直观,您无需进一步阅读,也不需要在注释中写任何内容,我已经知道您不需要SSHeller。
谁需要它? 首先,Web应用程序开发人员以及需要快速轻松地升级某种服务的每个人,无论是网站,博客还是即兴文件共享服务。
如何运作
我们需要具有几乎所有现代Linux发行版的服务器。 但是,与OpenVPN不同,对于Docker,我建议使用Debian 9
或Ubuntu 18.04
。 使用Fedora
和Centos
情况要差一些,因为您需要安装更多的软件包,另外配置自动运行,并且使用存储有所不同。
最重要的是,它应该是物理机或虚拟机,而不是容器(LXC,OpenVZ将不起作用)。 而且您需要SSH访问。 在上一期出版物中,有关于如何在DigitalOcean中注册和启动服务器的详细说明,最后,对Linode的详细说明略少一些。 这两种服务都提供简单的机器,每月5美元,并在通过推荐链接进行注册时提供奖金。 首先,这已经足够了。
获得服务器的IP,用户名和密码后,即可安装SSHeller。 您可以从GitHub上的发行版下载它,其中有适用于macOS,Windows和Linux的版本。 启动后,添加我们的服务器,连接到它并转到Docker插件。

如果尚未在服务器上安装Docker,则可以通过单击“ Install
按钮来执行此操作。
在不到一分钟的时间内,安装完成,将打开一个报告,您可以 不 读取并关闭,在主窗口中将有一个容器,卷和新容器的启动形式的列表。

主要功能
集装箱下水
在工作区的最底部是新容器的启动块。 它显示:
- 从上面的列表中选择的卷将连接到容器(如果支持)
- 再次在容器中为应用程序设置的密码(如果支持)
- 容器图像选择
- 和图像标签选择
您可以选择任何正式的Docker映像以及一些其他映像。 他们的列表设置在文件https://github.com/delfer/ssheller/blob/master/plugins/docker-profiles.json中 ,发布时为:
- jwilder / nginx-proxy-自动配置的Nginx通过域名而不是端口访问容器
- panubo / vsftpd -FTP服务器
- coderaiser / cloudcmd-用于访问文件的WEB界面
- webdevops / php-apache-dev-构建Apache + PHP +开发模块(显示错误)
- webdevops / php-apache-为“销售”构建Apache + PHP +模块(不显示错误)
- webdevops / php-nginx-dev-构建Nginx + PHP +开发模块(显示错误)
- webdevops / php-nginx-为“销售”构建Nginx + PHP +模块(不显示错误)
除了docker-profiles.json ( parameters部分)中列出的内容外,大多数容器都会忽略Password字段的内容:
- panubo / vsftpd-以管理员身份进行FTP连接的密码
- coderaiser / cloudcmd-以管理员身份登录的密码
- mysql / mariadb / postgres / influxdb-以管理员身份连接到数据库的密码
- rabbitmq / couchdb / orientdb-以管理员身份连接的密码
重要功能:
- 选择图像后,标签会自动加载。 可用搜索
- 该容器将在其作者指定的端口上可用。 如果端口繁忙,则将选择第一个空闲端口。
- 如果DNS中有相应的条目,则该容器将在<容器名称>。<服务器域>上可用。
- 如果卷是由镜像的作者指定的,或者是在docker-profiles.json中指定的,则将为该容器创建卷(部分卷 )
有用的提示:
- 首先需要启动jwilder / nginx-proxy ,以便占用端口80
- panubo / vsftpd需要最后运行,因为它启动时会更改文件夹的权限,以便对其具有完全访问权限
- 最好使用带有
latest-alpine
标签或latest-alpine
标签的图像-它们的工作方式与普通图像相同,但是由于重量减轻,加载速度更快 - 如果您需要MySQL-更好地使用MariaDB ,除非您当然不能确定MariaDB不适合您
- 如果您使用PHP运行某些程序,则可能不需要
fpm
,但需要使用apache
附加信息
单击RUN
按钮后,一旦启动容器,将出现一个报告窗口,其中将显示已完成的docker run
。 她会讲很多有趣的事情,说明所有事情的实际安排方式。
域名访问
如果您使用Web界面运行多个容器,例如Wordpress和NextCloud,并且不想通过指定IP和端口而是通过域名来访问它们,则需要满足两个简单条件:
- 成为第一个运行jwilder / nginx-proxy的人
- 有通配符DNS记录

即 例如,如果您拥有example.com域,则需要向其中添加*
类型A
记录并指定服务器IP。 在这种情况下,正在运行的worpdress容器将在http://wordpress.example.com上可用。
而且,如果没有域-没问题,则可以使用nip.io服务-无需注册或添加条目。 例如,如果您的服务器的IP为172.104.129.183 ,并且正在运行 jwilder / nginx-proxy和nextcloud ,则后者将在http://nextcloud.172.104.129.183.nip.io上可用。
一卷运行两个容器
例如,经常发生一个容器发布文件( nginx ),第二个容器下载( panubo / vsftpd )的情况。 或者需要第二个来查看/下载第一个的内容。
例如, Jenkins在启动后要求输入文件中记录的密码。

- 启动詹金斯
jenkins_var_jenkins_home
其音量jenkins_var_jenkins_home
- 指定访问密码
- 启动代码提升器/ cloudcmd
- 开门 http:// coderaiser-cloudcmd 。<domain>,输入步骤 3中的
admin
登录名和密码 - 我们看一下詹金斯的密码


容器互动
另外,您可能需要从一个容器连接到另一个容器。 例如,在安装过程中, wordpress会要求您指定用于连接数据库的参数:服务器地址( host )和端口。
localhost
不适用于容器之间的交互。
通常,您需要指定服务器的外部IP地址和显示的端口
容器列表中箭头( ->
)之前。 为简单起见,添加了此功能而不是服务器IP地址,仅指定单词host
。
除了MySQL,PostgreSQL,MongoDB,Redis,memcached,Tomcat,InfluxDB,CouchDB等也可以派上用场。
使用范例
文件共享
- 运行Nginx:高山
- 输入Web界面的管理员密码
- 选择
nginx_usr_share_nginx_html
卷 - 启动Coderaiser / cloudcmd:Latest-alpine
现在,您可以转到http:// <服务器地址>:8000下载授权文件,并且可以通过http:// <服务器地址>获得直接链接。 您只需要指定文件的完整路径。
WordPress的
- 我们发明并输入数据库密码
- Mariadb 推出
- 运行wordpress:apache
- 我们转到地址http:// <服务器地址> ,开始安装并指定用于连接到DBMS的参数:
- 数据库名称:
db
- 用户名:
admin
- 密码-第1段中输入的密码
- 数据库服务器:
host
- 表前缀-任何
台灯
- 我们发明并输入数据库密码
- Mariadb 推出
- 运行webdevops / php-apache-dev:alpine
- 选择卷
webdevops-php-apache-dev_app
- 我们发明并输入FTP服务器的密码
- 运行panubo / vsftpd
现在,您可以将.php
文件上传到ftp:// <服务器地址>并通过转到地址http:// <服务器地址>来运行它们
聚苯乙烯
并非所有容器都在应用程序中可用,并且某些可用容器在没有其他设置的情况下无法工作-在GitHub上编辑文件并发送您的请求请求。 如果您不知道如何打开问题 。 这将帮助您开发项目。
README文件中提供了其他支持项目的方法以及许多有用的信息。