mirror of
https://github.com/newnius/Dockerfiles.git
synced 2025-06-06 08:11:54 +00:00
add alluxio
This commit is contained in:
parent
fe0f81f3d7
commit
8a8e018d9d
1
alluxio/1.7/.dockerignore
Normal file
1
alluxio/1.7/.dockerignore
Normal file
@ -0,0 +1 @@
|
||||
conf/.gitignore
|
29
alluxio/1.7/Dockerfile
Normal file
29
alluxio/1.7/Dockerfile
Normal file
@ -0,0 +1,29 @@
|
||||
#
|
||||
# The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
|
||||
# (the "License"). You may not use this work except in compliance with the License, which is
|
||||
# available at www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
# either express or implied, as more fully set forth in the License.
|
||||
#
|
||||
# See the NOTICE file distributed with this work for information regarding copyright ownership.
|
||||
#
|
||||
|
||||
FROM openjdk:8-jdk-alpine
|
||||
|
||||
ARG ALLUXIO_TARBALL=http://downloads.alluxio.org/downloads/files/1.7.1/alluxio-1.7.1-bin.tar.gz
|
||||
|
||||
RUN apk add --update bash && \
|
||||
rm -rf /var/cache/apk/*
|
||||
|
||||
ADD ${ALLUXIO_TARBALL} /opt/
|
||||
|
||||
# if the tarball was remote, it needs to be untarred
|
||||
RUN cd /opt && \
|
||||
(if ls | grep -q ".tar.gz"; then tar -xzf *.tar.gz && rm *.tar.gz; fi) && \
|
||||
mv alluxio-* alluxio
|
||||
|
||||
COPY conf /opt/alluxio/conf/
|
||||
COPY entrypoint.sh /
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
39
alluxio/1.7/Dockerfile.fuse
Normal file
39
alluxio/1.7/Dockerfile.fuse
Normal file
@ -0,0 +1,39 @@
|
||||
#
|
||||
# The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
|
||||
# (the "License"). You may not use this work except in compliance with the License, which is
|
||||
# available at www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
# either express or implied, as more fully set forth in the License.
|
||||
#
|
||||
# See the NOTICE file distributed with this work for information regarding copyright ownership.
|
||||
#
|
||||
|
||||
FROM ubuntu:16.04
|
||||
|
||||
ARG ALLUXIO_TARBALL=http://downloads.alluxio.org/downloads/files/1.7.0/alluxio-1.7.0-bin.tar.gz
|
||||
ENV ENABLE_FUSE true
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends software-properties-common && \
|
||||
add-apt-repository -y ppa:openjdk-r/ppa && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
openjdk-8-jdk openjdk-8-jre-headless libfuse-dev && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
|
||||
|
||||
RUN mkdir -p /alluxio-fuse
|
||||
|
||||
ADD ${ALLUXIO_TARBALL} /opt/
|
||||
|
||||
# if the tarball was remote, it needs to be untarred
|
||||
RUN cd /opt && \
|
||||
(if ls | grep -q ".tar.gz"; then tar -xzf *.tar.gz && rm *.tar.gz; fi) && \
|
||||
mv alluxio-* alluxio
|
||||
|
||||
COPY conf /opt/alluxio/conf/
|
||||
COPY entrypoint.sh /
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
71
alluxio/1.7/README.md
Normal file
71
alluxio/1.7/README.md
Normal file
@ -0,0 +1,71 @@
|
||||
## Building docker image
|
||||
To build the Alluxio Docker image from the default remote url, run
|
||||
|
||||
```bash
|
||||
docker build -t alluxio .
|
||||
```
|
||||
|
||||
To build with a local Alluxio tarball, specify the `ALLUXIO_TARBALL` build argument
|
||||
|
||||
```bash
|
||||
docker build -t alluxio --build-arg ALLUXIO_TARBALL=alluxio-${version}.tar.gz .
|
||||
```
|
||||
|
||||
## Running docker image
|
||||
The generated image expects to be run with single argument of "master", "worker", or "proxy".
|
||||
To set an Alluxio configuration property, convert it to an environment variable by uppercasing
|
||||
and replacing periods with underscores. For example, `alluxio.master.hostname` converts to
|
||||
`ALLUXIO_MASTER_HOSTNAME`. You can then set the environment variable on the image with
|
||||
`-e PROPERTY=value`. Alluxio configuration values will be copied to `conf/alluxio-site.properties`
|
||||
when the image starts.
|
||||
|
||||
```bash
|
||||
docker run -e ALLUXIO_MASTER_HOSTNAME=ec2-203-0-113-25.compute-1.amazonaws.com alluxio [master|worker|proxy]
|
||||
```
|
||||
|
||||
Additional configuration files can be included when building the image by adding them to the
|
||||
`integration/docker/conf/` directory. All contents of this directory will be
|
||||
copied to `/opt/alluxio/conf`.
|
||||
|
||||
|
||||
## Building docker image with FUSE support
|
||||
To build a docker image with
|
||||
[FUSE](https://www.alluxio.org/docs/master/en/Mounting-Alluxio-FS-with-FUSE.html) support, run
|
||||
|
||||
```bash
|
||||
docker build -f Dockerfile.fuse -t alluxio-fuse .
|
||||
```
|
||||
|
||||
You can add the same arguments supported by the non-FUSE docker file.
|
||||
|
||||
|
||||
## Running docker image with FUSE support
|
||||
There are a couple extra arguments required to run the docker image with FUSE support, for example:
|
||||
|
||||
```bash
|
||||
docker run -e ALLUXIO_MASTER_HOSTNAME=alluxio-master --cap-add SYS_ADMIN --device /dev/fuse alluxio-fuse [master|worker|proxy]
|
||||
```
|
||||
|
||||
Note: running FUSE in docker requires adding
|
||||
[SYS_ADMIN capability](http://man7.org/linux/man-pages/man7/capabilities.7.html) to the container.
|
||||
This removes isolation of the container and should be used with caution.
|
||||
|
||||
## Extending docker image with applications
|
||||
You can easily extend the docker image to include applications to run on top of Alluxio.
|
||||
In order for the application to access data from Alluxio storage mounted with FUSE, it must run
|
||||
in the same container as Alluxio. For example, to run TensorFlow with Alluxio inside a docker
|
||||
container, just edit `Dockerfile.fuse` and replace
|
||||
|
||||
```bash
|
||||
FROM ubuntu:16.04
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```bash
|
||||
FROM tensorflow/tensorflow:1.3.0
|
||||
```
|
||||
|
||||
You can then build the image with the same command for building image with FUSE support and run it.
|
||||
There is a pre-built docker image with TensorFlow at
|
||||
https://hub.docker.com/r/alluxio/alluxio-tensorflow/
|
34
alluxio/1.7/bin/alluxio-master.sh
Executable file
34
alluxio/1.7/bin/alluxio-master.sh
Executable file
@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
|
||||
# (the "License"). You may not use this work except in compliance with the License, which is
|
||||
# available at www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
# either express or implied, as more fully set forth in the License.
|
||||
#
|
||||
# See the NOTICE file distributed with this work for information regarding copyright ownership.
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR=$(cd "$( dirname "$0" )"; pwd)
|
||||
|
||||
USAGE="Usage: alluxio-master
|
||||
|
||||
alluxio-master launches the Alluxio master in the foreground and logs to both
|
||||
the console and default log file. To configure the master, add configuration
|
||||
properties in alluxio-site.properties or environment variables in
|
||||
alluxio-env.sh."
|
||||
|
||||
if [[ "$#" -gt "0" ]]; then
|
||||
echo "${USAGE}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Log to both the console and the master logs file
|
||||
ALLUXIO_MASTER_LOGGER="Console,MASTER_LOGGER"
|
||||
|
||||
. ${SCRIPT_DIR}/../../../libexec/alluxio-config.sh
|
||||
|
||||
${JAVA} -cp ${ALLUXIO_SERVER_CLASSPATH} ${ALLUXIO_MASTER_JAVA_OPTS} alluxio.master.AlluxioMaster
|
35
alluxio/1.7/bin/alluxio-proxy.sh
Executable file
35
alluxio/1.7/bin/alluxio-proxy.sh
Executable file
@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
|
||||
# (the "License"). You may not use this work except in compliance with the License, which is
|
||||
# available at www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
# either express or implied, as more fully set forth in the License.
|
||||
#
|
||||
# See the NOTICE file distributed with this work for information regarding copyright ownership.
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR=$(cd "$( dirname "$0" )"; pwd)
|
||||
|
||||
USAGE="Usage: alluxio-proxy
|
||||
|
||||
alluxio-proxy launches the Alluxio proxy in the foreground and logs to both the
|
||||
console and default log file. The proxy will provide a REST interface for
|
||||
interacting with the Alluxio filesystem. To configure the proxy, add
|
||||
configuration properties in alluxio-site.properties or environment variables in
|
||||
alluxio-env.sh."
|
||||
|
||||
if [[ "$#" -gt "0" ]]; then
|
||||
echo "${USAGE}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Log to both the console and the proxy logs file
|
||||
ALLUXIO_PROXY_LOGGER="Console,PROXY_LOGGER"
|
||||
|
||||
. ${SCRIPT_DIR}/../../../libexec/alluxio-config.sh
|
||||
|
||||
${JAVA} -cp ${ALLUXIO_SERVER_CLASSPATH} ${ALLUXIO_PROXY_JAVA_OPTS} alluxio.proxy.AlluxioProxy
|
34
alluxio/1.7/bin/alluxio-worker.sh
Executable file
34
alluxio/1.7/bin/alluxio-worker.sh
Executable file
@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
|
||||
# (the "License"). You may not use this work except in compliance with the License, which is
|
||||
# available at www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
# either express or implied, as more fully set forth in the License.
|
||||
#
|
||||
# See the NOTICE file distributed with this work for information regarding copyright ownership.
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR=$(cd "$( dirname "$0" )"; pwd)
|
||||
|
||||
USAGE="Usage: alluxio-worker
|
||||
|
||||
alluxio-worker launches the Alluxio worker in the foreground and logs to both
|
||||
the console and default log file. To configure the worker, add configuration
|
||||
properties in alluxio-site.properties or environment variables in
|
||||
alluxio-env.sh."
|
||||
|
||||
if [[ "$#" -gt "0" ]]; then
|
||||
echo "${USAGE}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Log to both the console and the worker logs file
|
||||
ALLUXIO_WORKER_LOGGER="Console,WORKER_LOGGER"
|
||||
|
||||
. ${SCRIPT_DIR}/../../../libexec/alluxio-config.sh
|
||||
|
||||
${JAVA} -cp ${ALLUXIO_SERVER_CLASSPATH} ${ALLUXIO_WORKER_JAVA_OPTS} alluxio.worker.AlluxioWorker
|
1
alluxio/1.7/conf/alluxio-env.sh.template
Symbolic link
1
alluxio/1.7/conf/alluxio-env.sh.template
Symbolic link
@ -0,0 +1 @@
|
||||
../../../conf/alluxio-env.sh.template
|
1
alluxio/1.7/conf/alluxio-site.properties.template
Symbolic link
1
alluxio/1.7/conf/alluxio-site.properties.template
Symbolic link
@ -0,0 +1 @@
|
||||
../../../conf/alluxio-site.properties.template
|
104
alluxio/1.7/entrypoint.sh
Executable file
104
alluxio/1.7/entrypoint.sh
Executable file
@ -0,0 +1,104 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
|
||||
# (the "License"). You may not use this work except in compliance with the License, which is
|
||||
# available at www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
# either express or implied, as more fully set forth in the License.
|
||||
#
|
||||
# See the NOTICE file distributed with this work for information regarding copyright ownership.
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
NO_FORMAT='--no-format'
|
||||
|
||||
function printUsage {
|
||||
echo "Usage: COMMAND [COMMAND_OPTIONS]"
|
||||
echo
|
||||
echo "COMMAND is one of:"
|
||||
echo -e " master [--no-format] \t Start Alluxio master. If --no-format is specified, do not format"
|
||||
echo -e " worker [--no-format] \t Start Alluxio worker. If --no-format is specified, do not format"
|
||||
echo -e " proxy \t Start Alluxio proxy"
|
||||
}
|
||||
|
||||
if [[ $# -lt 1 ]]; then
|
||||
printUsage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
service=$1
|
||||
options=$2
|
||||
|
||||
# Only set ALLUXIO_RAM_FOLDER if tiered storage isn't explicitly configured
|
||||
if [[ -z "${ALLUXIO_WORKER_TIEREDSTORE_LEVEL0_DIRS_PATH}" ]]; then
|
||||
# Docker will set this tmpfs up by default. Its size is configurable through the
|
||||
# --shm-size argument to docker run
|
||||
export ALLUXIO_RAM_FOLDER=${ALLUXIO_RAM_FOLDER:-/dev/shm}
|
||||
fi
|
||||
|
||||
home=/opt/alluxio
|
||||
cd ${home}
|
||||
|
||||
# List of environment variables which go in alluxio-env.sh instead of
|
||||
# alluxio-site.properties
|
||||
alluxio_env_vars=(
|
||||
ALLUXIO_CLASSPATH
|
||||
ALLUXIO_HOSTNAME
|
||||
ALLUXIO_JARS
|
||||
ALLUXIO_JAVA_OPTS
|
||||
ALLUXIO_MASTER_JAVA_OPTS
|
||||
ALLUXIO_PROXY_JAVA_OPTS
|
||||
ALLUXIO_RAM_FOLDER
|
||||
ALLUXIO_USER_JAVA_OPTS
|
||||
ALLUXIO_WORKER_JAVA_OPTS
|
||||
)
|
||||
|
||||
for keyvaluepair in $(env); do
|
||||
# split around the "="
|
||||
key=$(echo ${keyvaluepair} | cut -d= -f1)
|
||||
value=$(echo ${keyvaluepair} | cut -d= -f2-)
|
||||
if [[ "${alluxio_env_vars[*]}" =~ "${key}" ]]; then
|
||||
echo "export ${key}=${value}" >> conf/alluxio-env.sh
|
||||
else
|
||||
# check if property name is valid
|
||||
if confkey=$(bin/alluxio runClass alluxio.cli.GetConfKey ${key} 2> /dev/null); then
|
||||
echo "${confkey}=${value}" >> conf/alluxio-site.properties
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$ENABLE_FUSE" = true ]; then
|
||||
integration/fuse/bin/alluxio-fuse mount /alluxio-fuse /
|
||||
fi
|
||||
|
||||
case ${service,,} in
|
||||
master)
|
||||
if [[ -n ${options} && ${options} != ${NO_FORMAT} ]]; then
|
||||
printUsage
|
||||
exit 1
|
||||
fi
|
||||
if [[ ${options} != ${NO_FORMAT} ]]; then
|
||||
bin/alluxio formatMaster
|
||||
fi
|
||||
integration/docker/bin/alluxio-master.sh
|
||||
;;
|
||||
worker)
|
||||
if [[ -n ${options} && ${options} != ${NO_FORMAT} ]]; then
|
||||
printUsage
|
||||
exit 1
|
||||
fi
|
||||
if [[ ${options} != ${NO_FORMAT} ]]; then
|
||||
bin/alluxio formatWorker
|
||||
fi
|
||||
integration/docker/bin/alluxio-worker.sh
|
||||
;;
|
||||
proxy)
|
||||
integration/docker/bin/alluxio-proxy.sh
|
||||
;;
|
||||
*)
|
||||
printUsage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
Loading…
Reference in New Issue
Block a user