问题描述
我有以下适用于zookeeper的Dockerfile,我正在尝试为其创建映像,但这给我一个错误.我最近开始使用Docker,并开始使用Zookeeper设置,因此我无法理解.这个错误是什么意思?
I have the below Dockerfile for zookeeper and I am trying to create an image for it, but it is giving me an error. I have recently started working with Docker, and started playing with a Zookeeper setup, so I am not able to understand. What does this error mean?
FROM ubuntu:trusty
MAINTAINER David
RUN apt-get update && apt-get install -y openjdk-7-jre-headless wget
ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64
# Install required packages
RUN apk add --no-cache \
bash \
su-exec
ENV ZOO_USER=zookeeper \
ZOO_CONF_DIR=/conf \
ZOO_DATA_DIR=/data \
ZOO_DATA_LOG_DIR=/datalog \
ZOO_PORT=2181 \
ZOO_TICK_TIME=2000 \
ZOO_INIT_LIMIT=5 \
ZOO_SYNC_LIMIT=2
# Add a user and make dirs
RUN set -x \
&& adduser -D "$ZOO_USER" \
&& mkdir -p "$ZOO_DATA_LOG_DIR" "$ZOO_DATA_DIR" "$ZOO_CONF_DIR" \
&& chown "$ZOO_USER:$ZOO_USER" "$ZOO_DATA_LOG_DIR" "$ZOO_DATA_DIR" "$ZOO_CONF_DIR"
ARG GPG_KEY=C823E3E5B12AF29C67F81976F5CECB3CB5E9BD2D
ARG DISTRO_NAME=zookeeper-3.4.9
# Download Apache Zookeeper, verify its PGP signature, untar and clean up
RUN set -x \
&& apk add --no-cache --virtual .build-deps \
gnupg \
&& wget -q "http://www.apache.org/dist/zookeeper/$DISTRO_NAME/$DISTRO_NAME.tar.gz" \
&& wget -q "http://www.apache.org/dist/zookeeper/$DISTRO_NAME/$DISTRO_NAME.tar.gz.asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-key "$GPG_KEY" \
&& gpg --batch --verify "$DISTRO_NAME.tar.gz.asc" "$DISTRO_NAME.tar.gz" \
&& tar -xzf "$DISTRO_NAME.tar.gz" \
&& mv "$DISTRO_NAME/conf/"* "$ZOO_CONF_DIR" \
&& rm -r "$GNUPGHOME" "$DISTRO_NAME.tar.gz" "$DISTRO_NAME.tar.gz.asc" \
&& apk del .build-deps
WORKDIR $DISTRO_NAME
VOLUME ["$ZOO_DATA_DIR", "$ZOO_DATA_LOG_DIR"]
EXPOSE $ZOO_PORT 2888 3888
ENV PATH=$PATH:/$DISTRO_NAME/bin \
ZOOCFGDIR=$ZOO_CONF_DIR
COPY docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["zkServer.sh", "start-foreground"]
以下是我得到的错误:
Step 4 : ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64
---> Running in a49507cb9725
---> 77b37883caf4
Removing intermediate container a49507cb9725
Step 5 : RUN apk add --no-cache bash su-exec
---> Running in a4fd76a644cf
/bin/sh: 1: apk: not found
The command '/bin/sh -c apk add --no-cache bash su-exec' returned a non-zero code: 127
我在这里做错什么了吗?为什么找不到apk
?
Am I doing anything wrong here? Why is apk
not found?
推荐答案
为,apk
用于Alpine发行版,并且您选择了FROM ubuntu:trusty
,它是使用apt-get
命令基于Debian的.将您的FROM行更改为FROM alpine:3.4
,以切换到具有apk
支持的基于Alpine的图像.
As larsks mentions, apk
is for Alpine distributions and you selected FROM ubuntu:trusty
which is Debian based with the apt-get
command. Change your FROM line to FROM alpine:3.4
to switch to the Alpine based image with apk
support.
这篇关于/bin/sh:1:apk:创建docker映像时找不到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!