Apache Ranger系列二:Ranger服务容器化

670 阅读1分钟

为了方便服务的维护和扩展,我们使用容器化的方式部署ranger。

前提条件

  1. 准备好ranger-2.1.0-admin.tar.gz文件
  2. 准备好mysql-connector-java-8.0.29.jar
  3. 一台安装有docker服务的linux机器

1 创建base镜像

目的:保存你所需特定版本的ranger和mysql文件,可以作为一个公共服务的镜像;

在linux机器上执行下列命令

  • mkdir ranger-docker-base
  • cp ranger-2.1.0-admin.tar.gz ranger-docker-base
  • cp mysql-connector-java-8.0.29.jar ranger-docker-base
  • cd ranger-docker-base/
  • vi Dockerfile

Dockerfile的内容

FROM maven:3.6.2-jdk-8
LABEL version=2.1.0

ARG RANGER_VERSION=2.1.0

COPY mysql-connector-java-8.0.29.jar /opt
COPY ranger-2.1.0-admin.tar.gz /opt

WORKDIR /opt

RUN apt-get -q update && tar zxvf ranger-2.1.0-admin.tar.gz

编译命令

  • docker build --network host -t xxxxxx/your_base_image_name:v1 .

本地运行,查看/opt路径下文件ranger和mysql文件是否存在。无误后,可以推送到远程仓库(具体命令不提供)

  • docker run -it xxxxxx/your_base_image_name:v1 /bin/bash

2 创建Ranger服务镜像

目的:在base镜像的基础上,增加服务所需的各种配置,一般是提交到私有仓库

准备好ranger-entrypoint.sh和install.propertites(简单的配置可以见Apache Ranger系列一)两个配置文件,执行以下命令

  • mkdir ranger-docker
  • cp ranger-entrypoint.sh ranger-docker
  • cp install.propertites ranger-docker
  • cd ranger-docker
  • vi Dockerfile

其中ranger-entrypoint.sh的内容

#!/bin/sh
sleep 10
ls /opt
cd $RANGER_HOME
./setup.sh
ranger-admin start

# Keep the container running
tail -f /dev/null

Dockerfile的内容,其中From的是刚创建的base镜像

FROM xxxxxx/your_base_image_name:v1
LABEL version=2.1.0

ARG RANGER_VERSION=2.1.0

COPY data/ranger-entrypoint.sh /opt

WORKDIR /opt

ENV JAVA_HOME=/usr/local/openjdk-8/
ENV RANGER_HOME=/opt/ranger-${RANGER_VERSION}-admin

COPY data/install.properties ${RANGER_HOME}

EXPOSE 6080

ENTRYPOINT ["/opt/ranger-entrypoint.sh"]

构建 image

  • docker build --network host -t xxxxxx/ranger-server-2.1:v1 .

本地运行,查看服务是否正常。无误后,可以推送到私有库(具体命令不提供)

  • docker run --network host --name ranger-server xxxxxx/ranger-server-2.1:v1