这是咏南翻译Marco Cantu的文章。

在过去的几年中,将服务器端解决方案(实际上是任何类型的应用程序)部署到轻量级DOCKER而不是物理机器或虚拟机已经变得越来越普遍,因为这允许更大的灵活性(在测试方面),更好地重建相同的执行环境,以及更大的可扩展性。

随着10.3.3版本的发布,Embarcadero正式开始支持将通用Linux应用程序部署到Docker,特别是支持部署RAD服务器。

在这篇文章中,我将介绍Docker和Docker Hub,以及如何轻松地将Linux应用程序部署到Docker。在第二篇博客文章中,我将特别关注RAD服务器的部署。我们也将很快有一份关于这个主题的更详细的白皮书。

什么是Docker 

Docker是一个操作系统级的虚拟化环境,允许在容器文件中打包和交付软件包。容器文件由Docker引擎执行,多个容器可以在同一个Linux系统上安装并同时运行。每个容器中都有一个操作系统级的虚拟化环境。容器比虚拟机更轻,因为它们由Docker引擎运行。容器是通过将一组称为Dockerfile的指令构建到容器镜像中来创建的。容器镜像随后在Docker引擎上执行。生成步骤和运行步骤都可以采用许多参数来配置特定的生成或运行容器镜像。此外,现有的容器镜像可以用作内部的起点,它允许您在现有容器镜像的功能的基础上添加新功能。容器和docker的信息来源很多,一个好的起点是https://www.docker.com/。

什么是Docker Hub? 

Docker提供一项服务,允许开发者和发布者向公众或他们的团队分发Docker镜像。这项服务被称为Docker Hub,它为用户提供了一种使用特定Docker镜像所在存储库的方法。Docker存储库还允许Docker镜像版本控制。Docker Hub包含官方镜像,比如Ubuntu镜像,可以作为很多用户的起点。

RAD Studio Docker容器

RAD Studio Docker容器paserver、pa radserver和pa radserver ib可以直接从DockerHub获得,也可以作为Dockerfiles(在GitHub上)和其他助手实用程序。当使用Docker从DockerHub中提取容器时,必须在容器名称前面加上组织名称,例如radstudio/pa Server、radstudio/pa radserver和radstudio/pa-radserver-ib。对于这篇博客文章,我将开始关注第一篇文章radstudio/paserver,它不包括RAD Server。Docker容器有许多不同的参数,可以在启动实例时传递给Docker引擎。另外,在构建和运行Docker镜像时,可以定义自定义的构建和运行参数。我们提供的脚本中包含了许多自定义参数,例如PAServer的密码。Docker容器实例可以在前台运行,您可以在前台与实例中运行的应用程序交互,也可以在后台分离运行,后者的行为类似于服务。Docker容器实例默认情况下不会在运行之间存储对实例的任何更改(它们是临时镜像)。但是,您可以在Docker实例中设置一个持久卷,它将存储Docker容器实例运行之间的更改。Docker实例中的目录可以装载到卷上,并且在Docker实例运行期间,该目录中所做的任何更改都会在卷上持久。

如何在Linux上安装Docker 

Docker系统可以通过多种方式进行安装,其中之一是使用Ubuntu操作系统中包含的APT包管理器来安装,要使用APT安装Docker,只需使用sudo或超级用户帐户以提升的权限运行APT install命令。

----------
#if using sudo
sudo apt install docker.io

#if using super user account
apt install docker.io

----------

PAServer Docker镜像 

PAServer Docker镜像使用Ubuntu:Bionic作为基础镜像,并在此基础上构建包括PAServer工具及其功能的镜像,PAServer工具是从Embarcadero服务器下载的。此镜像包含PAServer及其所有依赖项,以及用于使用BroadwayD的GTK+框架(FMXLinux库的一个特性部分,用于在Linux上构建ui,该库随Delphi免费提供)。BroadwayD可以通过HTML5和websockets在web上显示GTK+应用程序。将这两个工具放在同一个Docker容器上,允许开发人员使用PAServer部署控制台和基于图形用户界面的应用程序,并通过BroadwayD服务器通过web浏览器查看图形用户界面应用程序。此镜像有几个参数,包括PAServer密码,可以设置为build参数或run参数是否要在前台交互模式(-it)或分离模式(-d)下运行外部PAServer端口(即映射到容器中PAServer端口的主机端口)和broadwayd端口重新映射              PAServer的默认密码设置为'embtdocker'这是一个如何下载镜像并使用几个参数启动镜像的示例:

----------
docker pull radstudio/paserver
docker run -it -e PA_SERVER_PASSWORD=securepass -p 64211:64211 -p 8082:8082 radstudio/paserver
----------

此时,您可以通过docker镜像的主机IP和RAD Studio IDE中的端口地址来引用docker镜像,并通过docker镜像托管的PAServer部署和运行Linux应用程序。因此,Delphi应用程序将在docker下运行。

GitHub上的Dockerfile

不用从docker hub中提取镜像,您可以使用我们已经构建并在GitHub上提供的脚本创建一个自定义镜像。PAServer Dockerfile包含Docker在构建时用于创建Docker镜像的指令。Dockerfile依赖于从Embarcadero下载的特定版本的PAServer,可从以下网址获得:              https://github.com/Embarcadero/paserver-docker

更多的内容马上到来,在下一篇博文中,我们将继续关注通过docker部署RAD服务器,这是Embarcadero支持docker容器的关键原因。

【转】DELPHI开始支持LINUX DOCKER的更多相关文章

  1. DELPHI开始支持LINUX DOCKER

    DELPHI开始支持LINUX DOCKER 本方翻译自Marco Cantu的文章. 在过去的几年中,将服务器端解决方案(实际上是任何类型的应用程序)部署到轻量级容器而不是物理机器或虚拟机已经变得越 ...

  2. 【转】在 Delphi 中创建 Linux 守护程序(服务进程)

    转自波哥的译文,必须转过来,太有价值了!原文地址在这里.以下为原文内容: 本文译自 原文链接,语言上做了精炼和排版的变更,以便更简洁明了. Delphi 开始支持 Linux 平台为 Delphi 开 ...

  3. Linux Docker虚拟机入门实战讲解

    什么是Docker? Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotCloud公司.Docker自开源后受到广泛的关注和讨论,目 前已有多个相关项目,逐渐形成了围绕 ...

  4. linux docker .net core 从建立网站到预览

    docker的安装在网上一搜一大把,windows安装的就是exe双击,linux安装需要执行语句 ps:需要准备xftp.xshell.vs 2019.linux服务器.docker账号密码 例如: ...

  5. Delphi XE5 支持的Android 版本

    Delphi XE5 已经支持Android应用开发.  那XE5支持Android的哪些版本呢?Delphi编译的APP能部署到Gingerbread (2.3.3-2.3.7), Ice Crea ...

  6. 【转载】Visual Studio 2015 for Linux更好地支持Linux下的开发

    原文:Visual Studio 2015 for Linux更好地支持Linux下的开发 英文原文:Targeting Linux Made Easier in Visual Studio 2015 ...

  7. C#获取远程计算机硬件信息实例(支持linux和windows)

    原文:C#获取远程计算机硬件信息实例(支持linux和windows) 网上关于WMI的资料很多,但一直没有比较全的属性介绍.今天通过反射把所有属性都给弄出来了.   关于WMI的代码就不多说了.   ...

  8. Win10 & Linux Docker 安装使用

    Docker最近推出了可以运行在Win10和Mac上的稳定版本,让我们赶紧来体验一下. 一.Windows Docker 安装 1.安装 需要的条件为: 64bit Windows 10,开启Hype ...

  9. .NET Core 图片操作在 Linux/Docker 下的坑

    一.前言 .NET Core 目前更新到2.2了,但是直到现在在 .NET Core 本身依然不包括和图片有关的 Image.Bitmap 等类型.对于图片的操作在我们开发中很常见,比如:生成验证码. ...

随机推荐

  1. JAVA8 JVM内存结构变了,永久代到元空间

    在文章<JVM之内存结构详解>中我们描述了Java7以前的JVM内存结构,但在Java8和以后版本中JVM的内存结构慢慢发生了变化.作为面试官如果你还不知道,那么面试过程中是不是有些露怯? ...

  2. hadoop第一次面到hr(品友互动)

    第一次“北漂” 准备了一个星期的Hadoop,把林子雨老师的视频刷了一遍,翻出了好久没用的小本本,密密麻麻的记了一大堆.刷了网上能找到的Hadoop的所有面试题(这个真的很重要) 然后,启程,北上,还 ...

  3. 最新 游族网络java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.游族网络等10家互联网公司的校招Offer,因为某些自身原因最终选择了游族网络.6.7月主要是做系统复习.项目复盘.Leet ...

  4. vue中使用axios下载文件,兼容IE11

    一.设置axios返回值为blob 二.使用a标签的down属性下载,如果是IE浏览器,可以使用navigator.msSaveBlob进行下载 // data的数据类型是blob downloadF ...

  5. Linux内核编译、安装流程

    原文链接:https://blog.csdn.net/qq_28437139/article/details/83692907 此处只讲linux内核编译步骤至于安装虚拟机,安装ubuntu操作系统请 ...

  6. CEC、ARC功能介绍

    众所周知,HDMI作为一个数字化视频音频的接收标准,是可以同时传输视频和音频的,当然随着HDMI版本的提升,它的功能也一直在增强.事实上HDMI升级到1.3时,人们就发现了HDMI多了一个CEC功能. ...

  7. vue A对象赋值给B对象,修改B属性会影响到A问题

    实际在vue中  this.A = this.B,没有进行深层赋值,只是把this.A的地址指向了与this.B相同的地址,所有对于A的修改会影响到B. 解决相互影响的思路是在this.A必须是新建的 ...

  8. IBM Security AppScan Standard使用方法

    一.常规配置Appscan (安全自动化测试工具) Appscan是web应用程序渗透测试舞台上使用最广泛的工具之一.它是一个桌面应用程序,它有助于专业安全人员进行Web应用程序自动化脆弱性评估.本文 ...

  9. 大话OSI七层协议

    大白话OSI七层协议 互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层.实际上这个七层是不存在的.没有这七层的概念,只是人为的划分而已.区 ...

  10. Django中的Object Relational Mapping(ORM)

    ORM 介绍 ORM 概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用 ...