/bin/sh: 1: apk: 在创建 docker 镜像时找不到 [英] /bin/sh: 1: apk: not found while creating docker image

查看:32
本文介绍了/bin/sh: 1: apk: 在创建 docker 镜像时找不到的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有下面的 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?

推荐答案

As larsks 提到apk 用于 Alpine 发行版,您选择了 FROM ubuntu:trusty,它是基于 Debian 的 apt-get 命令.将您的 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 镜像时找不到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆