分享

我与阿里云的一千零一夜-008-当好水手和舵手(其三)

 偏扁豆 2021-11-21

0x0 前言

将应用变为基础设施需要哪些条件呢?

标准。

只要所依赖的东西是标准化的、可有序管理的、可迭代完善的社会必要公共服务系统都是可以列为基础设施。


为什么软件也可以作为基础设施?

  • 首先,不是所有的软件都需要大量的更新,可能每年维护一些bug就足以支撑整个业务;

  • 然后,软件定义趋势明显,越来越多的领域产业在使用软件定义的思想或者软件定义技术,例如软件定义网络、软件定义视觉等;

  • 最后,云计算、物联网和大数据的浪潮导致时代脉络与信息软件密不可分,互联网已经是基础设施的一部分,软件应用也是其中一份子。

过去的软件不是基础设施吗?

操作系统、中间件、数据库都是我们熟知的基础设施软件。但绝大多数软件并不是基础设施软件。因为他们缺乏一个稳定的维护机制和对外服务标准,便只能在时代的大浪淘沙中趋于沉寂。


容器技术正在标准化这一进程,使得个人开发者也可以作为现代信息系统基础设施的署名建设者。发挥同等作用的变革性技术还有Git。


0x1 利用Dockerfile构建容器

Dockerfile就是一个符合docker技术要求的标准配置文件。

如果我们已经有了一份正确的Dockerfile,比如他人给我们提供的。

docker build -t 机构/镜像名称<:tags> Dockerfile目录# Dockerfile目录如果是当前目录,则用.

如果还需要自己编写Dockerfile,那参照下方说明。

# 第一部分# 从基准镜像构建FROM 镜像# 第二部分# MAINTAINER,一般写个人id或组织id# LABEL 就是注释,方便阅读的,纯注释说明。不会对Dockerfile造成任何影响MAINTAINER 作者名字LABEL version = "1.0.0"LABEL description = "测试Dockerfile"# 第三部分# 工作目录,如果不存在则自动创建,一般是项目目录WORKDIR 工作目录# 第四部分# 环境目录,下举例ENV JAVA_HOME /usr/local/jdk1.8# 第五部分# 把当前所有文件 拷贝到容器上面的工作目录下(包括配置文件),可自定义COPY . .ADD . .# 第六部分# 设置构建容器时做的工作RUN 工作1 && 工作2# 第七部分# 创建容器内部的挂载点目录,一般用来存放数据库或需要永久保存的数据,下举例# 如果和host共享目录,Dockerfile中必须先创建一个挂载点# 然后在启动容器的时候通过“docker run –v $HOSTPATH:$CONTAINERPATH”来挂载,其中CONTAINERPATH就是创建的挂载点。VOLUME["/data"]# 第八部分# 声明容器里使用的端口EXPOSE <port>[<port>...] # 第九部分# 设置运行启动容器时做的工作CMD 工作1 && 工作2ENTERPOINT 工作1 && 工作2 # Dockerfile中只有最后一个ENTRYPOINT会被执行

0x2 单文件Dockerfile构建

假设你当前目录下有main可执行文件,是可执行文件。
即可以这样构建。

FROM centos:latestMAINTAINER tongxinCode@githubLABEL version 1.0ADD ./main .CMD ["./main"]

这时候使用docker images就可以看到自己创建的容器了。
然后使用相关命令运行相应容器。

0x3 小结

使用centos作为基础镜像的容器基本可以支持所有的独立二进制程序,但是它还是太笨重了,单个镜像即达到了200MB左右,这是我们不想要的。

路漫漫其修远兮,吾将上下而求索。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多