这是https://hub.docker.com/_/websphere-liberty%E7%9A%84%60i386%60%E6%9E%B6%E6%9E%84%E6%9E%84%E5%BB%BA%E7%9A%84%22%E6%AF%8F%E6%9E%B6%E6%9E%84%22%E4%BB%93%E5%BA%93%E2%80%94%E2%80%94%E6%9B%B4%E5%A4%9A%E4%BF%A1%E6%81%AF%EF%BC%8C%E8%AF%B7%E5%8F%82%E8%A7%81%E5%AE%98%E6%96%B9%E9%95%9C%E5%83%8F%E6%96%87%E6%A1%A3%E4%B8%AD%E7%9A%84https://github.com/docker-library/official-images#architectures-other-than-amd64%E5%92%8C%E5%AE%98%E6%96%B9%E9%95%9C%E5%83%8FFAQ%E4%B8%AD%E7%9A%84https://github.com/docker-library/faq#an-images-source-changed-in-git-now-what%E3%80%82
维护者:
https://github.com/WASdev/ci.docker
获取帮助:
WASdev社区
Dockerfile链接警告:此镜像在i386架构上不支持
问题提交地址:
https://github.com/WASdev/ci.docker/issues?q=
支持的架构:(https://github.com/docker-library/official-images#architectures-other-than-amd64)
https://hub.docker.com/r/amd64/websphere-liberty/, https://hub.docker.com/r/arm64v8/websphere-liberty/, https://hub.docker.com/r/ppc64le/websphere-liberty/, https://hub.docker.com/r/s390x/websphere-liberty/
已发布镜像工件详情:
https://github.com/docker-library/repo-info/blob/master/repos/websphere-liberty (https://github.com/docker-library/repo-info/commits/master/repos/websphere-liberty)
(镜像元数据、传输大小等)
镜像更新:
https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fwebsphere-liberty
https://github.com/docker-library/official-images/blob/master/library/websphere-liberty (https://github.com/docker-library/official-images/commits/master/library/websphere-liberty)
此描述的来源:
https://github.com/docker-library/docs/tree/master/websphere-liberty (https://github.com/docker-library/docs/commits/master/websphere-liberty)
此仓库中的所有镜像均使用Ubuntu作为操作系统。对于使用Universal Base Image的变体,请参见https://hub.docker.com/r/ibmcom/websphere-liberty/%E3%80%82
有关这些镜像的更多信息,请参见我们的https://github.com/WASdev/ci.docker#container-images%E3%80%82
此镜像默认以USER 1001(非root)身份运行,属于组0。请确保阅读以下内容以设置适当的文件夹和文件权限。
WebSphere Liberty访问的所有文件夹均已设置适当权限,但如果您的扩展Dockerfile需要访问其他位置的权限,只需临时切换到root并提供所需权限,例如:
dockerfileUSER root RUN mkdir -p /myFolder && chown -R 1001:0 /myFolder USER 1001
您必须确保通过COPY或ADD复制到镜像中的所有工件具有正确的权限,以便用户1001或组0可以读取和执行,因为文件传输到Docker镜像时所有权会更改为root:0。
您有几种方法可以实现:复制前、复制时或复制后更新权限。
复制前更新权限
由于文件所有权将更改为root:0,您只需设置所有者组的权限以能够读取/执行工件(即chmod命令的中间数字)。例如,您可以执行chmod g+rx server.xml以确保server.xml以及应用程序的EAR或WAR文件、JDBC驱动程序或其他通过COPY或ADD放置在镜像上的文件可以被组0读取和执行。
复制时更新权限
如果使用Docker v17.09.0-ce及更高版本,可以在ADD或COPY期间利用--chown=<user>:<group>标志。例如:COPY --chown=1001:0 jvm.options /config/jvm.options。这是首选方法,因为您无需在调用docker build之前更改权限,也不会在生成的镜像中复制层。
复制后更新权限
如果您的Dockerfile需要与旧版本的Docker CE兼容,并且不想预处理文件权限,可以临时切换到root以更改所需文件的权限。例如:
dockerfileUSER root RUN chown 1001:0 /config/jvm.options RUN chown 1001:0 /output/resources/security/ltpa.keys USER 1001
请注意,此模式将复制这些工件的Docker层,这可能会严重增加生成的Docker镜像的大小(取决于工件的大小)。因此,建议在复制前或复制时设置权限。
此仓库提供多个标签。带有beta标签的镜像包含最新月度测试版的安装归档内容。其他镜像均基于最新的普遍可用修复包。
kernel镜像仅包含Liberty内核,无其他运行时功能。此镜像推荐作为自定义构建镜像的基础,以便它们仅包含特定应用所需的功能。例如,以下Dockerfile以此镜像为基础,复制列出应用所需功能的server.xml,然后使用configure.sh脚本从在线仓库下载这些功能。
dockerfileFROM i386/websphere-liberty:kernel COPY --chown=1001:0 Sample1.war /config/dropins/ COPY --chown=1001:0 server.xml /config/ RUN configure.sh
这些镜像旨在支持多种使用模式。以下示例基于Java EE8 Liberty 应用部署示例,并假设https://github.com/WASdev/sample.servlet/releases/download/V1/DefaultServletEngine.zip%E5%B7%B2%E6%8F%90%E5%8F%96%E5%88%B0%60/tmp%60%EF%BC%8C%E4%B8%94%60server.xml%60%E5%B7%B2%E6%9B%B4%E6%96%B0%E4%BB%A5%E6%8E%A5%E5%8F%97%E6%9D%A5%E8%87%AA%E5%AE%B9%E5%99%A8%E5%A4%96%E9%83%A8%E7%9A%84HTTP%E8%BF%9E%E6%8E%A5%EF%BC%8C%E6%96%B9%E6%B3%95%E6%98%AF%E5%9C%A8%60server%60%E8%8A%82%E4%B8%AD%E6%B7%BB%E5%8A%A0%E4%BB%A5%E4%B8%8B%E5%85%83%E7%B4%A0%EF%BC%88%E5%A6%82%E6%9E%9C%E4%B8%8D%E4%BD%BF%E7%94%A8%E6%88%91%E4%BB%AC%E6%A0%87%E7%AD%BE%E4%B8%AD%E9%A2%84%E6%89%93%E5%8C%85%E7%9A%84%60server.xml%60%E6%96%87%E4%BB%B6%EF%BC%89%EF%BC%9A
xml<httpEndpoint host="*" httpPort="9080" httpsPort="-1"/>
创建扩展的Docker镜像(我们称之为"应用镜像")以封装应用及其配置是非常好的最佳实践。这将创建一个健壮、自包含且可预测的Docker镜像,可根据请求生成新容器,而不依赖于可能随时间变化的卷或其他外部运行时工件。
如果要构建最小的WebSphere Liberty应用镜像,可以从kernel标签开始,添加您的工件,然后运行configure.sh以扩展功能集以满足特定需求。有关更多详细信息,请参见我们的https://github.com/WASdev/ci.docker#building-an-application-image%E3%80%82
WebSphere Liberty镜像具有一组内置XML片段,用于启用和配置企业功能,如会话缓存和监控。这些通过应用镜像Dockerfile中的特定ARG进行切换,并通过configure.sh脚本进行配置。有关更多信息,请参见我们GitHub页面上的https://github.com/wasdev/ci.docker#enterprise-functionality%E3%80%82
此模式对于快速实验/早期开发非常有用(即"我只想在迭代应用时运行它"),但不应用于涉及不同团队和环境的开发场景——对于这些情况,上述"应用镜像"模式是正确的选择。
使用volumes时,可以将应用文件挂载到此服务器的dropins目录中并运行。以下示例在后台启动一个容器,运行主机文件系统中的.WAR文件,并将HTTP和HTTPS端口分别映射到80和443。
console$ docker run -d -p 80:9080 -p 443:9443 \ -v /tmp/DefaultServletEngine/dropins/Sample1.war:/config/dropins/Sample1.war \ i386/websphere-liberty:webProfile8
服务器启动后,您可以在Docker主机上浏览http://localhost/Sample1/SimpleServlet。
注意:如果在OS X或Windows上使用boot2docker虚拟机,需要使用boot2docker ip命令获取虚拟主机的IP,而不是使用localhost。
为了获得更大的配置灵活性,可以从主机挂载整个服务器配置目录,然后将服务器名称指定为运行命令的参数。注意:此特定示例服务器配置仅提供HTTP访问。
console$ docker run -d -p 80:9080 \ -v /tmp/DefaultServletEngine:/config \ i386/websphere-liberty:webProfile8
full镜像引入了特定于所有Liberty功能支持的功能,包括Spring Boot应用。因此,此镜像包含用于将Spring Boot应用分离为瘦应用和依赖库缓存的springBootUtility。要在不包含未使用功能的情况下获得这些相同功能,请改为基于kernel镜像构建,并为您的server.xml运行configure.sh,确保它启用springBoot-1.5或springBoot-2.0功能。
为详细说明这些功能,本节假设独立的Spring Boot 2.0.x应用hellospringboot.jar存在于/tmp目录中。
Spring Boot应用JAR部署到默认服务器配置中的dropins/spring目录,而不是dropins目录。Liberty允许每个服务器配置一个Spring Boot应用。您可以通过将应用JAR添加到dropins/spring目录来在此镜像上创建Spring Boot应用层。在此示例中,我们将hellospringboot.jar从/tmp复制到包含以下Dockerfile的同一目录。
dockerfileFROM i386/websphere-liberty:kernel COPY --chown=1001:0 hellospringboot.jar /config/dropins/spring/ COPY --chown=1001:0 server.xml /config/ RUN configure.sh
可以按如下方式构建和运行自定义镜像。
console$ docker build -t app . $ docker run -d -p 8080:9080 app
full镜像提供库缓存目录lib.index.cache,其中包含由springBootUtility命令创建的索引库缓存。使用lib.index.cache为瘦应用提供库缓存。
您可以使用springBootUtility命令在full镜像上创建瘦应用和库缓存层。以下示例使用Docker阶段构建来高效构建镜像,该镜像将胖Spring Boot应用部署为包含瘦应用和库缓存的两层。
dockerfileFROM i386/websphere-liberty:kernel as staging COPY --chown=1001:0 hellospringboot.jar /staging/myFatApp.jar COPY --chown=1001:0 server.xml /config/ RUN springBootUtility thin \ --sourceAppPath=/staging/myFatApp.jar \ --targetThinAppPath=/staging/myThinApp.jar \ --targetLibCachePath=/staging/lib.index.cache FROM i386/websphere-liberty:kernel COPY --chown=1001:0 server.xml /config COPY --from=staging /staging/lib.index.cache /lib.index.cache COPY --from=staging /staging/myThinApp.jar /config/dropins/spring/myThinApp.jar RUN configure.sh
对于打包了在持续应用更新中很少更改的库依赖项的Spring Boot应用,您可以使用上述功能在容器之间共享库缓存,并创建更高效的Docker层,利用Docker构建缓存。
默认情况下,当websphere-liberty镜像启动时,会在/config/configDropins/defaults/keystore.xml中生成一个Liberty服务器XML片段,其中指定了带有生成密码的keyStore节。这会导致Liberty在启动时生成带有自签名证书的默认密钥库和信任库(有关更多信息,请参见知识中心)。提供自己的密钥库/信任库时,可以通过确保/config/configDropins/defaults/keystore.xml已存在(例如,作为Docker构建的一部分添加)来禁用此默认行为。此文件可以包含您的密钥库配置,或者可以只包含空的<server></server>节。
IBM JRE提供类数据共享功能,通过使用文件支持的共享内存,在同一主机上运行的多个Java虚拟机之间提供透明和动态的数据共享。运行Liberty Docker镜像时,它会在/opt/ibm/wlp/output/.classCache查找文件。要受益于类数据共享,此位置需要通过主机或数据卷容器在容器之间共享。
以上述示例3中的应用镜像为例,可以按如下方式共享包含共享缓存的主机文件位置/tmp/websphere-liberty/classCache:
consoledocker run -d -p 80:9080 -p 443:9443 \ -v /tmp/websphere-liberty/classCache:/opt/ibm/wlp/output/.classCache app
或者,创建一个命名数据卷容器,在共享文件位置公开卷:
consoledocker run -e LICENSE=accept -v /opt/ibm/wlp/output/.classCache \ --name classcache i386/websphere-liberty true
然后,使用来自数据卷容器classcache的卷挂载运行WebSphere Liberty镜像,如下所示:
consoledocker run -d -p 80:9080 -p 443:9443 --volumes-from classcache app
Liberty运行时会写入两个不同的目录:/opt/ibm/wlp/output和/logs。要以只读模式运行Liberty镜像,这些目录可以挂载为临时文件系统。如果使用提供的镜像,密钥库将在初始启动时在服务器配置中生成。这意味着服务器配置目录要么需要是可读写的,要么密钥库需要构建到镜像中。在示例命令中,/config挂载为可读写卷。
consoledocker run -d -p 80:9080 -p 443:9443 \ --tmpfs /opt/ibm/wlp/output --tmpfs /logs -v /config --read-only \ i386/websphere-liberty:javaee8
基础Ubuntu镜像不包含其他语言包。要使用替代区域设置,请构建自己的镜像,安装所需的语言包,然后设置LANG环境变量。例如,以下Dockerfile以i386/websphere-liberty:full镜像为基础,安装葡萄牙语语言包,并将巴西葡萄牙语设置为默认区域设置:
dockerfileFROM i386/websphere-liberty:full RUN apt-get update \ && apt-get install -y language-pack-pt-base \ && rm -rf /var/lib/apt/lists/* ENV LANG pt_BR.UTF-8
Dockerfile和相关脚本根据Apache License 2.0许可。
从WebSphere Liberty 18.0.0.3开始,Docker Hub中的WebSphere Liberty Docker镜像包含非担保程序国际许可协议(ILAN)许可证,允许有权使用WebSphere Liberty的客户根据国际程序许可协议(IPLA)条款使用这些相同的镜像。
对于仍希望将WebSphere Application Server许可证应用于其Docker镜像的客户,可以按照https://github.com/WASdev/ci.docker/tree/master/ga/production-upgrade%E8%BF%9B%E8%A1%8C%E6%93%8D%E4%BD%9C%E3%80%82
与所有Docker镜像一样,这些镜像可能还包含其他软件,这些软件可能受其他许可证(例如基础发行版中的Bash等,以及包含的主要软件的任何直接或间接依赖项)约束。
一些能够自动检测到的其他许可证信息可能位于https://github.com/docker-library/repo-info/tree/master/repos/websphere-liberty%E4%B8%AD%E3%80%82
至于任何预构建镜像的使用,镜像用户有责任确保对此镜像的任何使用都符合其中包含的所有软件的相关许可证。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务