林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka
摘要:本文开始简单介绍了Docker以及IBM Bluemix,接下来阐述了如何通过Ubuntu14.04操作系统来配置IBM Bluemix的Docker容器与镜像的操作环境,并演示了在本地操作镜像push到Bluemix中并创建运行容器输出结果和在Bluemix上一些Docker相关命令操作。
操作系统:
Ubuntu14.04
一、需要的准备工作
1、注册一个Bluemix账号
2、对Docker的一些基本了解,如什么是镜像,什么是容器?
3、相关Linux命令,最好设置自己的Ubuntu14.04能联网,您可以省去很多拷贝文件工作,一个apt-get即可!
二、什么是Docker?
什么是Docker镜像?
Docker 镜像就是一个只读的模板。例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。镜像可以用来创建 Docker 容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
(笔者注:这里的镜像对应于Bluemix中的容器映像)
什么是Docker容器?
Docker 容器是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
(笔者注:这里的容器即可对应Bluemix中的容器)
它能干什么?
1、web应用的自动化打包和发布;
2、自动化测试和持续集成、发布;
3、在服务型环境中部署和调整数据库或其他的后台应用;
4、从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
关于Bluemix
IBM Bluemix 是开放式标准云平台,用于构建、运行和管理应用程序。使用 Bluemix,开发者可以集中通过灵活的计算选项、DevOps 工具的选择以及一组强大的 IBM 及第三方 API 和服务来构建卓越的用户体验。
三、环境准备
1、下载并安装CF命令行,也即是Cloud Foundry CLI V6.11.3 或更高版本
下载网址https://github.com/cloudfoundry/cli/releases
这是下载后的文件
Deb格式安装很简单,直接使用命令
dpkg -icf-cli-installer_6.14.0_x86-64.deb
一路安装即可!这步执行后,您就可以使用Bluemix来开发和部署自己的应用了!如下面(注:JavaWebProject2是我自己的Bluemix上创建的一个Web应用,第一次连接到Bluemix需要将这个工程下载下来,并解压进入,执行以下命令)
本文因为还要进行Dcoker的操作,所以您还需要进行如下步骤!
2、安装DockerV1.6、1.7、1.8 或 1.8.1
本地安装这个之后,Bluemix就能识别您机器上的Docker命令。
安装 Docker 1.6、1.7、1.8 或 1.8.1。以获取特定于操作系统的信息。 可以使用针对以下某个常用操作系统的 URL 来下载 Docker V1.8.1。
OS X 64 位:https://get.docker.com/builds/Darwin/x86_64/docker-1.8.1
OS X 32 位:https://get.docker.com/builds/Darwin/i386/docker-1.8.1
Linux 64 位:https://get.docker.com/builds/Linux/x86_64/docker-1.8.1
Linux 32 位:https://get.docker.com/builds/Linux/i386/docker-1.8.1
Windows 64 位:https://get.docker.com/builds/Windows/x86_64/docker-1.8.1.exe
Windows 32 位:https://get.docker.com/builds/Windows/i386/docker-1.8.1.exe
(注:把1.8.1换成1.6.1或1.7.1即可下载对应的版本),此处笔者下载的是Linux 64 位,来看看下载的是什么?
这就是一个二进制执行文件,要安装?两行命令即可!
首先,给二进制文件赋权,使用如下命令,
Chmod +xdocker-1.8.1
然后执行安装
./docker-1.8.1
过程如下(注意,要先cd进入docker-1.8.1二进制执行文件所在的文件夹)
3、安装IBM Containers Cloud Foundry 插件
安装 IBM® Containers Cloud Foundry 插件,以运行本机 Docker CLI 命令来管理容器。意思是安装了这个以后,您才能在本地Docker和BylueMix之间来建立一个连接的通道。
64位输入:
cf install-plugin https://static-ice.ng.Bluemix.net/ibm-containers-linux_x64
32 位输入:
cf install-plugin https://static-ice.ng.Bluemix.net/ibm-containers-linux_x86
下面是截图
您也可以通过运行以下命令并检查已安装的 Cloud Foundry 插件的列表来验证插件安装。
cf plugins
如下
到此一切准备就绪,在Bluemix上开始您的Docker之旅吧!
四、Bluemix使用Docker相关命令使用
1、查看当前自己Bluemix上的镜像
使用命令:
cf ic images;
第一次运行,可能会出现如下错误
按照提示,输入 cf ic init 即可。再来运行一次刚才的命令,结果如下:
当然,您也可以通过Bluemix官网来查看
上面两图的镜像是对应的(Bluemix叫做容器映像,其实就是Docker镜像)
2、查看当前正在运行的容器
使用命令
cf ic ps;
当然,您也可以通过Bluemix官网来查看
注:此处运行的容器,是我在Bluemix官网点击创建的,一开始就没有任何容器在运行的。
3、进入正在运行的容器内部
cf ic attach linContain
很可惜,进入失败了
这表明没进入容器,通过查看官方的文档。它明确说明了不支持这种方式进入容器,只能通过配置SSH来登陆。不过,官网并不推荐您通过SSH来进入容器。
请看这里:
这是官网的一些信息:
您必须访问容器内容的情况并不多。如果需要访问,可通过执行以下步骤来以SSH 方式登录到容器。
要点: 将映像推送到组织的专用 Bluemix 存储库后,漏洞顾问程序会自动扫描这些映像。漏洞顾问程序会将包含SSH 密钥的映像标记为策略违例。您仍可以继续使用标记为违例的映像,但请记住,登录到容器的功能会被视为是漏洞。
更多的命令请到官网查看,或者直接cf ic(笔者注:Docker的命令有的,它也基本上都有,但有一些是无法运行的)
五、Bluemix提交自定义的Docker镜像
最关键的一步来了!
首先看看我本地有什么镜像吧!
现在笔者要本地Ubuntu上的ouruser/Ubuntu这个镜像push到Bluemix个人中心,注意,这的Image_id 为1f879014f4d2。
首先,把使用 IBM Containers 注册表中您的专用名称空间来标记该映像。
1、使用 IBM Containers 注册表中您的专用名称空间来标记该映像。
模板:
docker tag image_name registry.ng.Bluemix.net/namespace/image_name:image_tag
参数:
namespace:名称空间(Bluemix自动会帮您设置)
image_name:镜像名
image_tag:镜像标签
其中:namespace可以使用cf ic namespace get 来查看
实例:
该映像名称为可选项。如果未指定该名称,那么会将该映像标记为 latest。
2、将此映像推送到 IBM Containers 注册表
模板:
docker push registry.ng.Bluemix.net/ namespace/image_name:image_tag
参数:
namespace:名称空间(Bluemix自动会帮您设置)
image_name:镜像名
image_tag:镜像标签
其中:namespace可以使用cf ic namespace get 来查看
实例:
如果出现以上信息显示push成功,也可以到个人Bluemix中心去看看,打开仪表板->启动容器。可以看到您自己的Docker容器,其中1f879014f4d2为容器的名字,和push时设置有关。
此步骤可能出现如下错误:
解决方法:
重新使用cf ic login登陆,然后再push
3、您可以从 Bluemix 目录中的此映像创建容器,也可以使用以下命令来创建容器
模板:
cf ic run --name container_nameregistry.ng.Bluemix.net/namespace/image_name:image_tag
参数:
namespace:名称空间(Bluemix自动会帮您设置)
container_name 您要启动的容器的名称
image_name:镜像名
image_tag:镜像标签
实例:
启动容器失败了,不知道是不是因它不支持?这里不管是用笔者自己的容器还是用Bluemix中心上的容器都无法从命令行启动。所以本文就介绍下如何从网页来启动。
六、Bluemix运行自己的容器
1、点击仪表板->启动容器->选择自己上传的镜像,点击进去。内容如下:
可能出现的问题:
自定义的容器成功发布到Bluemix中时,在创建容器时可能会出现如下错误,这里的意思是容器里有漏洞,无法直接创建运行
查看问题原因:
点击Viewthe vulnerability report for this image,可查看提交的镜像的漏洞,比如笔者的如下:这里显示此镜像有7个漏洞,并列出了了那7个漏洞。
它非常详细,不仅列出了错误,还列出了解决方法,如下:
这时,您可以通过在外边重新修改您的容器,然后再重新push,这些漏洞就会消失。当然,您如果不想修复这些问题,想直接运行些镜像,那么请接着看下面。
解决方法:
这时请点击Manageyour org‘s policies,来自定义自己的策略,进入内容如下:左边为漏洞对应的动作,右边为个人Bluemix中心上的镜像有漏洞的处理方式
这时可以镜像配置有漏洞时,是Block还是Warn,默认是Block,那么就无法运行容器,通过设置成warn后,显示如下:
这样就可以了,返回创建容器的页面。出现如下页面:
说明可以从自己的镜像来运行容器了!
2、运行您自己的容器
完成上面的步骤后,进入创建的页面。输入容器名,是否要绑定公共IP,端口号(绑定了公共的IP可以在其它电脑通过SSH来访问容器)。点击高级选项,会出现个人Bluemix中心上已创建的应用程序,选择对应的应用程序可进行绑定到容器。
大图如下:
最后一步,点击创建!Bluemix会自动按要求去配置您的容器并绑定您的应用程序。最终运行界面结果查看:
可以看到该容器运行的专用IP/公共IP,以及使用的端口,绑定的应用程序/服务,以及当前容器的运行状态。
至此,成功从自定义镜像创建运行自己的容器!
七、总结:
Bluemix是一个很强大的平台,通过它您可以省去很多时间在开发和运维上。但是要在Bluemix上来上传自己的镜像并运行自己的容器,整个过程比较繁琐。笔者首先是在Windows平台来搭建环境的,但是一直无法通过cf ic login连接到个人的Bluemix镜像中心。而后在Ubuntu14.04的上传镜像和创建容器也遇到了很多问题,不过,这些问题在官网的手册很多都可以找到解决的方法。建议好好看官网手册。
参考文章: