当前位置: 首页 > 面试题库 >

Openshift-我可以使用Openshift运行docker客户端命令(例如docker push)吗?

井通
2023-03-14
问题内容

当您拥有Docker主机时,使用Docker很容易。您将Docker客户端与Docker主机(引擎)连接起来。然后,在Jenkins构建服务器上构建和部署(复杂)docker映像的过程类似于以下一系列命令:

  • Maven全新安装=>构建您的WAR文件
  • Docker build =>创建一个带有WAR应用程序文件的Wildfly映像
  • Docker标记=>标记新映像
  • Docker push =>将映像推送到docker hub
  • Docker run ==>在docker主机上安装并运行docker镜像。

Openshift Starter可以这样工作吗?答案:是的,此容器即服务(CAAS)选项是可能的。

在下面的步骤中,我创建一个由2个图像组成的项目:MySql和由Wildfly服务器托管的SpringBoot / Angular /
Hibernate。当然,这也适用于Spring Boot JAR应用程序。

您从本地运行的Docker守护程序开始。我是通过Docker Quickstart Terminal执行此操作的。我仅将minishift用于本地测试-
在这种情况下不使用。

步骤1 :创建一个项目和1个MySql应用程序。

无需docker即可通过Openshift Web控制台完成此操作。您也可以使用oc new-proect命令。

步骤2 :登录openshift项目。在在线控制台中,单击顶部栏(右侧)上的问号。选择“命令行工具”。您可以通过右侧的图标将登录命令复制到剪贴板。

$ oc login等…(第一个剪贴板图标,粘贴整个命令)。

步骤3 :登录到您的Docker注册表。在这种情况下,请检查openshift在线控制台。

$ docker login -uoc whoami -poc whoami --show-tokenregistry.pro-us-
east-1.openshift.com

注意:请勿将端口号用作后缀openshift:443!

步骤4: 在本地或在构建服务器上(使用Jenkins)构建并标记映像。

$ mvn clean install-创建war文件。您可以将其称为“ ROOT.war”。

$ docker build -t myproject / mynewapplication:latest。

$ docker标签myproject / mynewapplication Registry.pro-us-
east-1.openshift.com/myproject/mynewapplication

如果您输入的名称不正确,一会儿您将无法推送图像。所以不要(!)写pro-us-east1。它是pro-us-east-1,等等。

Dockerfile位于Maven项目文件夹中。dockerfile可能看起来像:

FROM jboss/wildfly
COPY target/ROOT.war /opt/jboss/wildfly/standalone/deployments/
# CMD - use the default wildfly default start command

内存效率更高的方法是:

FROM openjdk:8-jdk-alpine
ENV JAVA_APP_JAR your.jar
ENV AB_OFF true
EXPOSE 8080
ADD target/$JAVA_APP_JAR /deployments/
CMD ["java","-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-jar","/deployments/your.jar"]

最后的设置将极大地改善/平衡您的内存使用情况。就我而言,将运行中的容器从600MB +减少到大约300MB可以正常运行!

步骤5 :将映像推送到内部Openshift存储库

$ docker push Registry.pro-us-east-1.openshift.com/myproject/mynewapplication

步骤6-A.1 :通过new-app命令从现有docker映像创建应用程序。仅在创建应用程序时第一次执行此操作。

$ oc new-app mynewapplication

->在“ mynewapplication”标签的“ latest”标签下的“ myproject / mynewapplication”图像流中找到图像1233123223(大约一个小时)
...此映像将部署在部署配置“ mynewapplication”中
->创建资源...
    创建了deploymentconfig“ mynewapplication”
    服务“ mynewapplication”已创建
->成功
    运行“ oc status”以查看您的应用。

步骤6-A.2 :有关初始化设置,请参见下文。部署应用程序/
Web服务器时,创建一个“路由”,以便客户端可以访问该应用程序。由于必须执行一次,因此通过控制台(应用程序>路由)进行设置是一个很好的选择。示例:使用标准证书使您的网站仅可用于https:(1)使用目标端口8080(运行HTTP服务器的位置),(2)选中“安全路由”选项,(3)保持TLS终止为Edge。(4)对于不安全的流量,请选择“重定向”选项并…创建您的路线。稍等片刻,您就有一个HTTPS站点。

步骤6-B :更新图像时:推送现有图像时,将不会自动重新部署。您可以通过在线控制台或通过以下命令开始新的部署:

$ oc推出最新dc / mynewapplication -n myproject

要检查部署结果:

$ oc状态

要检查例如MySql容器是否正在运行:

$ oc获取豆荚

获取Mysql容器的名称。

$ oc rsh容器名称

然后,您将看到您是否真的可以访问数据库。

备注 :使用Openshift Starter / Original的 备注
:很高兴Openshift允许我们尝试免费的Starter版本。当然,对资源的使用有一系列限制。注意将“部署”策略设置为“重新创建”。“滚动”策略当然更好,但会消耗更多资源。我将MySql映像的资源大小通常设置为420Mi,而Wildfly映像的资源大小设置为600Mi。欢迎提出建议!


问题答案:

您可以登录OpenShift的内部图像注册表,然后将图像直接推送到其中。您需要先标记图像,使其与推送图像的项目名称匹配。有关更多详细信息,请参见:

  • http://cookbook.openshift.org/image-registry-and-image-streams/how-do-i-push-an-image-to-the-internal-image-registry.html

一旦推送到内部映像注册表,您就可以使用oc new-app或Web控制台从该映像进行部署。



 类似资料:
  • 当您有Docker主机时,使用Docker很容易。将Docker客户端与Docker主机(引擎)连接。然后,构建和部署(复杂的)docker映像的过程就像Jenkins构建服务器上的一系列命令: Maven干净安装= Openshift Starter 可以这样工作吗?答案是:是的,这个容器即服务(CAAS)选项是可能的。 在下面的步骤中,我创建了一个由 2 个图像组成的项目:MySql 和 Sp

  • 我已经在我的openshift集群的openshift-logging命名空间中安装了ElasticSearch。我能够使用持有者令牌执行 curl 到 elasticsearch,现在我想使用 TLS 证书对 ElasticSearch 执行 curl 到。 CURL使用oc exec CURL使用承载令牌处理弹性搜索服务路由 现在我想使用TLS认证执行curl,我已经从运行弹性搜索集群中提取了

  • 我对Openshift Origin非常陌生。我现在正在尝试在OpenShift origin中部署docker容器的可能性。为此,我创建了一个非常简单的docker容器,它将两个数字相加并产生结果: https://github.com/abrahamjaison01/openshifttest 我在本地创建了一个docker映像,在docker hub中创建了一个公共docker映像: 我在本

  • OpenShift中部署了一个应用程序(Java)。还配置了istio入口网关。我的任务是使用https协议和MTL调用我的服务。目前,我在tls块的入口网关中有以下设置: 我想通过googlechrome/Postman/curl调用我的服务,据我所知,为此我需要基于openshift中指定的证书生成一个客户端证书,并将其放入调用客户端。我的问题是如何从中生成客户机证书,以及如何将其放在调用方上

  • 此页面描述了 "storm" 命令行客户端可能使用的所有命令. 要了解如何设置 "storm" 客户端与远程群集的操作, 请按照 安装开发环境 中的说明进行操作. 这些命令是: jar sql kill activate deactivate rebalance repl classpath localconfvalue remoteconfvalue nimbus supervisor ui d

  • 当使用.NET瘦客户端时,是否可以启动和提交/回滚Ignite事务?我没有找到开始交易的方法。谢谢你!