[17.0.0.3 and later]

为应用程序创建 Docker 容器

您必须创建 Docker 容器并将其推送到注册表,它将在该处由 IBM Cloud Private 引用。

关于此任务

使用 Docker Hub 中的官方 WebSphere® Application Server for Developers Liberty 映像

此存储库中提供了多个映像。带有 beta 标记的映像包含每月 Beta 版的安装归档内容。其他映像都基于最新的公开发行修订包。

kernel 映像仅包含 Liberty 内核,而未包含其他运行时功能部件。您可以使用此映像,或是使用仅包含特定应用程序所需功能部件的定制映像。例如,以下 Dockerfile 示例片段以此映像开头,复制 server.xml 文件(其中列出此应用程序所需的功能部件),然后使用 installUtility 命令从在线存储库下载这些功能部件:
FROM websphere-liberty:kernel
COPY server.xml /config/
RUN installUtility install --acceptLicense defaultServer

webProfile6 映像包含实现 Java EE6 Web 概要文件合规性所需的功能部件。另外,它还会引入其他功能部件,以使内容与可通过运行时 JAR 文件下载的功能部件(主要是 OSGi 应用程序所需的功能部件)匹配。

webProfile7 映像包含实现 Java EE7 Web 概要文件合规性所需的功能部件。javaee7 映像扩展此映像,并添加实现 Java EE7 完整平台合规性所需的功能部件。javaee7 映像也带有 latest 标记。

而且,webProfile6webProfile7javaee7 映像均包含一组用于典型生产方案的公共功能部件。这组公共功能部件由下列功能部件构成:
  • appSecurity-2.0
  • collectiveMember-1.0
  • localConnector-1.0
  • ldapRegistry-3.0
  • monitor-1.0
  • requestTiming-1.0
  • restConnector-1.0
  • sessionDatabase-1.0

过程

  1. 更新 server.xml 文件,通过在 server 节添加以下元素,接受来自容器外部的 HTTP 连接:
    <httpEndpoint host="*" httpPort="9080" httpsPort="-1"/>
  2. 创建 Eclipse 项目,例如,sample-one-container。在此项目中,包括来自 server.xml 文件的 Dockerfile 和 WAR 文件。 请参阅以下 Dockerfile 示例:
    FROM library/websphere-liberty:webProfile7
    Add sample-one.war /opt/ibm/wlp/usr/servers/defaultServer/apps
    COPY server.xml /opt/ibm/wlp/usr/servers/defaultServer/
    ENV LICENSE accept

    在此 Dockerfile 中,定制 Liberty 映像,方法如下:将该 WAR 文件复制到 drop-ins 目录,这将安装该应用程序并启动服务器。server.xml 将替换为修改后的 server.xml,以允许来自容器外部的 HTTP 连接。另外,还会接受许可证。

  3. 收集此项目中的 server.xml 文件和 WAR 文件,并准备运行 Docker 构建以创建 Docker 映像。
  4. 打开命令行,将当前目录设置为 sample-one-container 项目目录,然后运行 Docker 构建。 这是定制 Docker 构建,它从 Liberty Docker Hub 映像开始,并添加应用程序和相应的 server.xml 配置。请参阅以下示例,它显示一个成功构建的运行过程:
    arthurs-mbp:docker-hub arthur$ docker build .
    Sending build context to Docker daemon  957.4kB
    Step 1/4 : FROM websphere-liberty:kernel
     ---> 3fd79ff460ff
    Step 2/4 : COPY server.xml /config/
     ---> Using cache
     ---> a0e43965425f
    Step 3/4 : COPY airlines.war /config/apps/
     ---> Using cache
     ---> dfc6aee86df5
    Step 4/4 : RUN installUtility install --acceptLicense defaultServer
     ---> Using cache
     ---> d5ab21decab4
    Successfully built d5ab21decab4
    arthurs-mbp:docker-hub arthur$
  5. 使用您的 Docker 用户标识和密码登录。 登录 Docker Hub 时,将显示类似以下示例的输出:
    arthurs-mbp:docker-hub arthur$ docker login
    Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
    Username: arthurdm
    Password:
    Login Succeeded
    arthurs-mbp:docker-hub arthur$
  6. 构建完成后,为该映像创建标记。 此标记表示在注册表中用于引用此映像的名称。请参阅以下示例:
    arthurs-mbp:docker-hub arthur$ docker tag d5ab21decab4 arthurdm/websphere-liberty
  7. 将该映像推送至 Docker Hub 存储库,使其公开,可供下载和运行。 请参阅以下示例:
    arthurs-mbp:docker-hub arthur$ docker push arthurdm/websphere-liberty
    The push refers to a repository [docker.io/arthurdm/websphere-liberty]
    c2eefa54fcc7: Layer already exists 
    09fa033b42e3: Layer already exists 
    753266ce94a2: Layer already exists 
    0a76debd7d35: Layer already exists 
    d86dd55017f1: Layer already exists 
    d5e2acba7cce: Layer already exists 
    eefb3f013a83: Layer already exists 
    28fca5e92849: Layer already exists 
    3e60706b7714: Layer already exists 
    1a39a1088d6e: Layer already exists 
    73e5d2de6e3e: Layer already exists 
    08f405d988e4: Layer already exists 
    511ddc11cf68: Layer already exists 
    a1a54d352248: Layer already exists 
    9d3227c1793b: Layer already exists 
    latest: digest: sha256:9e41f2a269360fbd0ff926434ab4df38cce49aa83442b1a38eaf13049cb164b2 size: 3453
    arthurs-mbp:docker-hub arthur$

结果

您已创建一个 Docker 容器,它已推送至 Docker Hub 存储库。

下一步做什么

将该应用程序推送至存储库之后,请通过指定 arthurdm/websphere-liberty 映像,在 IBM Cloud Private 环境中安装该应用程序。此安装是通过 Helm 图表完成。


用于指示主题类型的图标 任务主题

文件名:twlp_icp_docker.html