本系列的第 1 部分 介绍了如何创建和保护私有 Docker 注册表,然后使用注册表镜像部署 IBM PureApplication System 中的模式。第 2 部分(本文)将演示如何扩展 WebSphere Liberty 容器,以及如何将 Docker Compose 模板转换成一种模式。
如果您需要为 Docker 镜像指定更多的数据,或扩展它的配置,那么您可以添加一个应用程序存档。在本教程中,您将学习如何使用三种方法来定制一个 Docker 镜像:
所有情景都假设在 PureApplication System 中提供了一个基础 Liberty 容器。请使用以下步骤创建容器:
wasdev/websphere-liberty:latest
accept
。 在该场景中,您可以创建一个脚本包,其中包含一个应用程序存档,然后启动一个 Liberty Docker 容器,从脚本包读取存档。您不需要创建一个 Docker 镜像,只需要创建一个脚本包。WAR 文件和 Liberty 容器彼此是松散耦合的,但与 PureApplication System 紧密耦合。
在此步骤中,将创建一个包含应用程序存档的脚本包。该应用程序存档必须在 Liberty 容器文件夹 opt/ibm/wlp/usr/servers/defaultServer/dropins 中。
UploadApplication
。 Location 字段是 /tmp/UploadApplication
,而 Command 字段是 /tmp/UploadApplication/run.sh
。dest 键的默认值是 /tmp/myapp
。 在这一步中,将创建一种模式,其中包含镜像组件、软件组件和脚本包。
UploadApplicationToLiberty
。图 4 显示了已完成的模式。 wasdev/websphere-liberty:latest
。 accept
。 /tmp/myapp
添加到目录 /opt/ibm/wlp/usr/servers/defaultServer/dropins 中。 /tmp/myapp
,如图 6 所示。 部署模式,然后在 http://< ip_addr >:9080/ServletApp 访问应用程序。
在该场景中,通过扩展默认的 Liberty 镜像,给它增加一个 WAR 文件,然后将其推送到注册表,创建一个新的 Docker 镜像。WAR 文件和 Liberty 容器紧密耦合,但可以在任何 Docker 环境中使用。
FROM wasdev/websphere-liberty ADD myApp.war /opt/ibm/wlp/usr/servers/defaultServer/dropins/ENV LICENSE accept
docker build -t app-image docker tag app-image <registry>/sample/app-image:8.5 docker push <registry>/sample/app-image:8.5
将一个应用程序存档放在一个单独的数据卷容器中,使它能够与其他容器共享一个存档。在该场景中,创建一个新的 Docker 镜像,但不需要扩展 Liberty 镜像。WAR 文件和 Liberty 容器是松散耦合的,但可以在任何 Docker 环境中使用。
From busybox:latest ADD ServletApp.war /opt/ibm/wlp/usr/servers/defaultServer/dropins/ServletApp.war VOLUME ["/opt/ibm/wlp/usr/servers/defaultServer/dropins"]
docker build -t app-data-image docker tag app-data-image <registry>/sample/app-data-image:ServletApp docker push app-data-image <registry>/sample/app-data-image:ServletApp
Docker Compose(前身为 Fig)是一个命令行界面 (CLI),用于开发和运行在多个容器中的 Docker 应用程序。您可以使用一个 Compose 文件来定义应用程序并配置其服务。然后,使用一个命令,根据您的配置创建所有服务并启动它们。Compose 适用于开发和测试环境,还适用于小型生产部署。
在 .yml 文件中的 YAML 规则中描述 Docker Compose 模板。YAML 是一个数据序列化语言。清单 3 显示了一个 WordPress 应用程序的示例文件 docker-compose.yml。Docker Compose 不支持下载镜像。因此,您必须手动将镜像复制到 PureApplication System 中的私有 Docker 注册表。
mysql: image: orchardup/mysql:latest ports: - "3306:3306" environment: MYSQL_DATABASE:wordpressd web: image: fig_test/wordpress:3.8 ports: - "8000:8000" links: - db:mysql
PureApplication 提供一个 CLI 将现有的 Docker Compose 模板文件转换为一个虚拟系统模式。语法是:
bin/pure -h <server> -u <user> -p <password> -f ./samples/FigToPattern.py -–file <template file> --name <patternname>
pure
命令将模板文件转换为具有指定名称的模式,并在 PureApplication System 中安装这个模式。FigToPattern.py 是转换工具。以下示例命令将模板转换为模式。命令的输出被发送到 appmodel.json 文件。
bin/pure -h 9.123.123.12 -u myUserID -p myPassword -f ./samples/FigToPattern.py / -–file /tmp/fig-web.yml -–name "Fig Sample Pattern"
由 Docker Compose 生成的模式没有指定使用哪个基础 OS 镜像来进行虚拟机部署。它使用了在 Cloud > Default Deploy Settings 中选定的默认镜像,如图 10 所示。如果没有默认镜像,请在 Pattern Builder 中打开模式并选择一个镜像。在部署模式之前,还必须为虚拟机节点设置 password 字段。