openshift_在OpenShift Origin上运行任何Docker映像

openshift

从现在开始我一直在使用OpenShift。 因为许多的原因。 首先,我不想在Windows上构建自己的Docker和Kubernetes环境,其次,因为我喜欢简单的安装。 圣诞节假期过后,我决定将计算机升级到Windows10。尽管我喜欢外观,但它破坏了很多网络和容器安装,包括Docker和OpenShift环境。 现在,我已重新启动并运行所有内容,现在是时候进一步研究微服务了。 首先要真正启动并运行OpenShift并获得开发环境设置,在其中我们可以简单地将Docker映像推送到其中,而无需使用任何Source-2-Image或OpenShift构建机制。

安装多合一虚拟机

下载多合一虚拟机映像并将其导入到无业游民的框中。 该映像基于OpenShift Origin,并且是具有集成Docker注册表的功能齐全的OpenShift实例。 该项目的目的是允许Web开发人员和其他有关方面在自己的计算机上运行OpenShift V3。 根据配置的方式,VM会在本地计算机上显示,就像它在计算机之外的某个地方运行一样。 正是我需要在OpenShift中向您展示并引入更多功能。 如果您需要更多帮助,请按照此较早的博客文章中方法2进行操作

我还假设您正在运行docker-machine。 您可以通过Docker Toolbox安装它。

OpenShift的第一步

通过无所事事的方式启动杂志,然后将浏览器重定向到https:// localhost:8443 /。 接受证书警告,然后输入admin / admin作为登录名。 您现在正在浏览管理控制台。 让我们创建一个新项目以进行以下操作:

oc login https://localhost:8443
# enter admin/admin as the credentials

oc new-project myfear --description="Testing random Docker Images on OpenShift" --display-name="Myfears test project"

# Add admin role to user myfear
oc policy add-role-to-user myfear admin -n myfear

首先要做的是实际启动并运行MySql数据库。 我想在以后的博客文章中使用它,这是一个很好的测试,看看是否一切正常。 从我的github仓库中获取两个json文件,并执行以下命令:

oc create -f mysql-pod.json
oc create -f mysql-service.json

返回浏览器并选择myfear项目,并查看mysql服务并通过一个pod运行。

使用OpenShift注册表

您刚刚见证了OpenShift如何拉起mysql映像并启动了一个带有容器的容器。 显然,此图像来自内置注册表。 但是,如何实际将docker映像上传到内部OpenShift注册表? SSH进入无业游民的机器,环顾四周:

vagrant ssh
docker ps

您会看到很多正在运行的容器,其中一个正在运行openshift / openshift-registry-proxy。 这个小宝石实际上将端口5000从内部docker注册表转发到了无业游民的虚拟机。 打开Virtualbox,然后查看那里的端口转发规则。 另一个规则将端口5000从来宾转发到主机。 这意味着默认情况下,内部OpenShift Docker注册表已公开。 但是我们如何在那推东西呢? 泊坞窗客户端需要泊坞窗主机才能工作。 OpenShift Docker守护程序未在外部公开,您不能仅将Docker客户端指向它。

这意味着,您需要在计算机上配置另一个Docker主机,以将OpenShift Docker注册表作为外部注册表访问。 我在这里使用docker-machine,因为用它创建新的docker主机非常容易。

docker-machine create -d virtualbox dev

几秒钟后,将创建并启动“ dev”虚拟机。 现在我们需要从dev框中找出主机系统的IP地址。 SSH进入机器并获取默认网关的IP:

docker-machine ssh dev
$ ip route | grep default

> 10.0.0.2

现在,我们需要停止计算机并将发现的IP地址添加到配置的不安全注册表部分:

docker-machine stop dev
edit  ~/.docker/machine/machines/default/config.json 
# Add the found ip address plus the registry port to the HostOptions => EngineOptions =>  InsecureRegistry array

之后,它应如下所示:

"InsecureRegistry": [
                "10.0.2.2:5000"
   ]

是时候重新启动dev vm并为其配置docker客户端了:

docker-machine start dev
FOR /f "tokens=*" %i IN ('docker-machine env dev --shell cmd') DO %i

现在就这样。 重要的一件事是内部注册表是受保护的,我们需要登录到它。 使用以下命令获取用户“ myfear”的登录令牌:

oc login -u myfear
oc whoami -t

这将返回类似dV2Dep7vP8pJTxNGk5oNJuqXdPbdznHrxy5_7MZ4KFY的内容。 现在登录到注册表:

docker login -u myfear -p dV2Dep7vP8pJTxNGk5oNJuqXdPbdznHrxy5_7MZ4KFY -e markus@someemail.org 10.0.2.2:5000

确保使用正确的用户名和令牌。 您将收到一条成功消息,并且您的登录凭据将保存在中央config.json中。

构建并推送自定义图像

是时候最终构建自定义图像并推送它了。 我再次使用Roland的docker maven插件。

如果您想了解更多有关它的信息,请参阅旧的博客文章 。 也可以在这个github仓库中找到代码。 比较pom.xml并确保更新docker.host和docker.registry属性

<docker.host>tcp://192.168.99.101:2376</docker.host>
  <docker.registry>10.0.2.2:5000</docker.registry>

以及具有正确凭据的<authConfig>部分。 使用以下方法生成图像:

mvn clean install docker:build docker:push

如果遇到Maven插件无法构建映像的问题,则可能需要先手动拉出jboss / base-jdk:8映像:

docker pull jboss/base-jdk:8

让我们通过使用控制台并导航到Overview => image stream页面来检查图像是否成功上传。

openshift自定义图像流
实际上,该图像已列出。 现在,我们需要使用它启动一个容器,并将服务公开给全世界:

oc new-app swarm-sample-discovery:latest --name=swarm
oc expose service swarm --hostname=swarm-sample-discovery.local

请确保将主机名映射添加到主机或dns配置(到127.0.0.1)。 如您所见,我不再使用docker image标签,而是使用图像流名称。 OpenShift在内部对此进行了转换。

是时候通过浏览器http://swarm-sample-discovery.local:1080 / rs / customer访问该示例了。

如果您想了解端口,请返回Virtualbox配置并检查nat部分。 一个虚拟机上的所有组件实际上假定您已经在端口80上运行了某些设备,并将vm端口映射到1080主机端口。

该应用程序目前做得很少,但是我将在随后的博客文章中使用它来深入研究服务发现选项。

控制台概述显示了两个服务,每个服务都有一个Pod。

openshift自定义图像概述

今天就这样。 再次感谢罗兰在此方面的帮助。 让我知道,如果您遇到问题,以及是否想了解有关OpenShift和自定义图像的其他信息。

翻译自: https://www.javacodegeeks.com/2016/01/running-docker-image-openshift-origin.html

openshift

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值