Openshift中是否存在Liberty Docker映像部署问题
我能够在本地docker容器中部署Liberty docker映像,并可以访问Liberty server 我将liberty映像推送到系统中安装的Minishift,但在创建docker容器时,遇到如下错误: 如果以前有人尝试过,请分享您的观点: 日志跟踪:Openshift中是否存在Liberty Docker映像部署问题,docker,openshift,websphere-liberty,Docker,Openshift,Websphere Liberty,我能够在本地docker容器中部署Liberty docker映像,并可以访问Liberty server 我将liberty映像推送到系统中安装的Minishift,但在创建docker容器时,遇到如下错误: 如果以前有人尝试过,请分享您的观点: 日志跟踪: unable to write 'random state' mkdir: cannot create directory '/config/configDropins': Permission denied /opt/ibm/docke
unable to write 'random state'
mkdir: cannot create directory '/config/configDropins': Permission denied
/opt/ibm/docker/docker-server: line 32:
/config/configDropins/defaults/keystore.xml: No such file or directory
JVMSHRC155E Error copying username into cache name
JVMSHRC686I Failed to startup shared class cache. Continue without
using it as -Xshareclasses:nonfatal is specified
CWWKE0005E: The runtime environment could not be launched.
CWWKE0044E: There is no write permission for server directory
/opt/ibm/wlp/output/defaultServer
默认情况下,OpenShift将以项目唯一的指定用户ID运行图像。许多可用的映像都已写入,因此它们只能作为
根运行
,即使它们不需要作为根运行
如果您尝试运行这样的映像,因为目录/文件已设置为只能由root
用户写入,因此将映像作为非root
用户ID运行将导致其失败
最佳做法是编写映像,以便可以作为任意用户ID运行。不幸的是,很少有人这样做,其结果是,他们的映像无法在更安全的多租户环境中用于在容器中部署应用程序
OpenShift文档提供了有关如何实现映像的指南,以便能够在更安全的环境中运行。请参阅中的“支持任意用户ID”一节:
root
身份运行容器。如果可能的话,您应该避免这样做,尤其是对于您不信任的第三方映像。有关如何执行此操作的详细信息,请参阅:
如果需要固定权限的内容的总大小很小,那么最后一种可能用于某些映像的方法是使用init容器复制需要对
emptyDir
卷进行写访问的目录。然后在主容器中装入复制目录顶部的emptyDir
卷。这样可以避免修改图像或启用anyuid
。如果还必须复制应用程序二进制文件,则emptyDir
卷中的可用空间量可能不够。这可能只适用于应用程序希望更新配置文件或创建锁文件的情况。如果同一目录用于大量临时文件系统数据(如缓存数据库或日志),则无法使用该目录。默认情况下,OpenShift将以项目特有的指定用户ID运行图像。许多可用的映像都已写入,因此它们只能作为根运行
,即使它们不需要作为根运行
如果您尝试运行这样的映像,因为目录/文件已设置为只能由root
用户写入,因此将映像作为非root
用户ID运行将导致其失败
最佳做法是编写映像,以便可以作为任意用户ID运行。不幸的是,很少有人这样做,其结果是,他们的映像无法在更安全的多租户环境中用于在容器中部署应用程序
OpenShift文档提供了有关如何实现映像的指南,以便能够在更安全的环境中运行。请参阅中的“支持任意用户ID”一节:
root
身份运行容器。如果可能的话,您应该避免这样做,尤其是对于您不信任的第三方映像。有关如何执行此操作的详细信息,请参阅:
如果需要固定权限的内容的总大小很小,那么最后一种可能用于某些映像的方法是使用init容器复制需要对
emptyDir
卷进行写访问的目录。然后在主容器中装入复制目录顶部的emptyDir
卷。这样可以避免修改图像或启用anyuid
。如果还必须复制应用程序二进制文件,则emptyDir
卷中的可用空间量可能不够。这可能只适用于应用程序希望更新配置文件或创建锁文件的情况。如果同一目录用于大量临时文件系统数据(如缓存数据库或日志),则无法使用此目录。docker文件的外观如何?错误消息表明启动服务器的用户id没有足够的权限写入服务器输出目录。我只在编写为以非root用户身份运行的Docker文件中看到过这一点。默认的liberty映像以root运行。默认情况下,OpenShift不会运行