本文介绍在Linux操作系统上安装和使用Source-to-Image(S2I)工具包的方法,它是一个工具包和工作流程,用于从源代码构建可重现的容器图像,S2I用于通过将源代码注入容器映像并让容器准备要执行的源代码来生成可立即运行的映像。S2I为你提供了一种简单的版本和控制构建环境的方法,就像你使用容器图像来版本化运行时环境一样。在这里,我们将向你展示如何在Linux系统上安装S2I Toolkit并使用它来构建容器应用程序。
相关链接
在Linux上安装Source-to-Image(S2I)工具包 这一方法支持CentOS/Fedora/Ubuntu/Arch/Debian版本,我们将下载Source-To-Image(S2I)二进制包归档文件,将其解压缩并将二进制文件放在我们的系统PATH中。 访问下载页面并下载适合你机器的正确版本,如果在32位系统上,请选择linux-386或linux-amd64 for 64-bit: mkdir /tmp/s2i/ && cd /tmp/s2i/ curl -s https://api.github.com/repos/openshift/source-to-image/releases/latest \ | grep browser_download_url \ | grep linux-amd64 \ | cut -d '"' -f 4 \ | wget -qi - 下载后,使用该命令解压缩tar: $ tar xvf source-to-image*.gz ./ ./s2i ./sti 该文件应该是可执行的,将其移动到/usr/local/bin路径: sudo mv s2i /usr/local/bin rm -rf /tmp/s2i/ 确认文件位置并检查已安装的版本: $ which s2i /usr/local/bin/s2i $ s2i version s2i v1.1.14 要查看使用帮助页面,请使用如下命令: $ s2i --help
要引导新的启用S2I的映像存储库,请使用以下命令语法: $ s2i create <image name> <destination directory> 此命令将生成一个骨架.s2i目录,并使用你可以开始的示例S2I脚本填充它,见例子: mkdir /tmp/s2i-test && cd /tmp/s2i-test s2i create cent7-app . 目录树: $ tree
在Linux上使用Source-to-Image(S2I) 现在我们已经安装了S2I工具,我们可以操作一个简单的例子,说明它如何用于使用应用程序构建你的图像,为简单起见,我们将使用Software Collections S2I存储库,其中包含许多应用程序的预创建模板。 我们的例子是Nginx Web服务器(参考:CentOS 7系统源码安装和配置Nginx服务器),让我们使用Dockerfiles为OpenShift克隆Nginx图像的存储库,你可以在RHEL和基于CentOS的图像之间进行选择: git clone --recursive https://github.com/sclorg/nginx-container.git 更改为Nginx版本文件夹: cd nginx-container git submodule update --init cd 1.12 对于使用其他版本的Nginx,只需在上面的命令中用特定版本替换1.12值。 1、存储库中的文件和目录
在本地拥有存储库后,创建名为nginx-centos7的CentOS 7构建器映像: docker build -t nginx-centos7 . 2、创建应用程序映像 应用程序映像将构建器映像与应用程序源代码组合在一起,应用程序源代码使用通过Dockerfile安装的任何应用程序提供,使用汇编脚本编译,并使用运行脚本运行。 可以使用创建的图像作为基础来构建可在Openshift Container平台上运行的简单示例应用程序,以下命令将创建应用程序映像: $ cd nginx-container/1.12 $ s2i build test/test-app nginx-centos7 nginx-centos7-app ---> Installing application source ---> Copying nginx.conf configuration file… './nginx.conf' -> '/etc/opt/rh/rh-nginx112/nginx/nginx.conf' ---> Copying nginx configuration files… './nginx-cfg/default.conf' -> '/opt/app-root/etc/nginx.d/default.conf' ---> Copying nginx default server configuration files… './nginx-default-cfg/alias.conf' -> '/opt/app-root/etc/nginx.default.d/alias.conf' ---> Copying nginx start-hook scripts… Build completed successfully 使用汇编脚本中定义的逻辑,s2i现在将使用构建器映像作为基础创建应用程序映像,并包含test/test-app目录中的源代码。 检查以确认你已创建应用程序映像: $ docker images | grep nginx-centos7-app nginx-centos7-app latest 59cbe8e707c7 About a minute ago 320MB 3、运行应用程序映像 通过调用docker run命令运行应用程序映像: docker run -d -p 8080:8080 nginx-centos7-app 部署的应用程序包含一个简单的静态网页,应该可以从http://localhost:8080访问:
至此,已成功运行应用程序映像。
相关主题 |