SpringCloud第十八篇:微服务 Docker 化之基础环境

本文介绍了如何将微服务Docker化,重点讲解了选用Alpine作为基础镜像的原因及其轻量级特性。通过添加glibc支持,解决了Alpine与JDK的兼容问题,并提供了不同版本JDK(8, 9, 10, 11)的Dockerfile示例,详细阐述了Dockerfile编写注意事项,以及如何从阿里云镜像仓库获取预构建的镜像。" 104837063,8619420,使用Electron构建图片上传工具,"['前端开发', 'Electron', '图片处理', '七牛云', '桌面应用']
摘要由CSDN通过智能技术生成
  1. 容器化
    Docker 的横空出世,给了容器技术带来了质的飞跃,Docker 标准化了服务的基础设施,统一了应用的打包分发,部署以及操作系统相关类库等,解决了测试生产部署时环境差异的问题。对于运维来讲,由于镜像的不可变性,更容易进行服务部署和回滚操作。利用各种第三方容器管理平台,实现一键部署、动态伸缩等操作变的轻而易举。

  2. 基础镜像选择
    在操作系统的选择上,可选择传统的 CentOS 、 Ubuntu 或者更为轻量化的 Alpine 。比如 CentOS 或者 Ubuntu 的镜像都在 100MB 以上,压缩后也都有大几十 MB ,而轻量化的 Alpine 3.10 版本镜像大小约为 5.58MB ,而它压缩后更是仅有 2MB 大小左右。

Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此得到开源社区越来越多的青睐。在保持瘦身的同时,Alpine 还提供了自己的包管理工具 apk 。

关于基础镜像的选择,一个是考虑镜像的大小,另一个是只提供最小的依赖包。关于第二点,不同的服务所需要的依赖包是不同的,这里不再展开讨论,如果仅从第一点考虑的话, Alpine 肯定是首选,镜像越小,远程推拉越快,消耗的资源也越小,更为的方便,我们这里采用 Alpine 作为基础镜像。

  1. Dockerfile 编写
    选择 Alpine 有一个比较麻烦的地方是 Alpine 采用的是 musl libc 的 C 的标准库,而 Oracle 或者 OpenJDK 提供的版本主要是已 glibc 为主。所以我们考虑为 Alpine 加上 glibc ,然后添加 glibc 的 JDK 编译版本作为基础镜像。

3.1 Alpine + glibc
这里选择的版本是目前最新版 Alpine 3.10 版本,glibc 采用的是 Sgerrand 开源的 glibc 安装包(https://github.com/sgerrand/alpine-pkg-glibc/ ),版本为 2.30-r0 。具体代码如下:

代码清单:chapter17/dockerfiles/alpine-glibc/Dockerfile

FROM alpine:3.10
MAINTAINER inwsy@hotmail.com
RUN apk add --no-cache ca-certificates curl openssl binutils xz tzdata \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone \
    && GLIBC_VER="2.30-r0" \
    && ALPINE_GLIBC_REPO="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" \
    && curl -Ls ${
   ALPINE_GLIBC_REPO}/${
   GLIBC_VER}/glibc-${
   GLIBC_VER}.apk > /opt/${
   GLIBC_VER}.apk \
    && apk add --allow-untrusted /opt/${
   GLIBC_VER}.apk \
    && curl -Ls https://www.archlinux.org/packages/core/x86_64/gcc-libs/download > /opt/gcc-libs.tar.xz \
    && mkdir /opt/gcc \
    && tar -xf /opt/gcc-libs.tar.xz -C /opt/gcc \
    && mv /opt/gcc/usr/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值