วิธีใช้ทุบตีกับภาพนักเทียบท่าที่ใช้อัลไพน์?


211

ฉันสร้างภาพนักเทียบท่าจาก openjdk: 8-jdk-alpine แต่เมื่อฉันพยายามรันคำสั่งง่ายๆฉันได้รับข้อผิดพลาดต่อไปนี้:

RUN bash
/bin/sh: bash: not found

RUN ./gradlew build
env: can't execute 'bash': No such file or directory

26
สำหรับ googlers:docker run --rm -i -t alpine /bin/sh
นาบิลคาดิมิ

เริ่มคอนเทนเนอร์ (
ตอบโต้

คำตอบ:


336

อิมเมจนักเทียบท่าอัลไพน์ไม่ได้ติดตั้งทุบตีตามค่าเริ่มต้น คุณจะต้องเพิ่มคำสั่งต่อไปนี้เพื่อรับbash:

RUN apk update && apk add bash

หากคุณกำลังใช้งานอยู่Alpine 3.3+คุณสามารถทำได้

RUN apk add --no-cache bash

เพื่อทำให้ขนาดภาพเล็กลง (ขอบคุณที่แสดงความคิดเห็นจาก @sprkysnrky)


4
apk upgradeไม่จำเป็นต้องใช้
แมตต์

1
ฉันชอบใช้การแนะนำของ @Yuva โดยใช้ RUN /bin/shแทน RUN bin/bash
Alex Montoya

1
นั่นขึ้นอยู่กับคุณหลายคนต้องการbashคุณสมบัติเฉพาะ
anubhava

218

ลองใช้RUN /bin/shแทนการทุบตี


35
OP ขอทุบตี sh ไม่ได้ทุบตี
phil294

115
แต่นี่เป็นความคิดเห็นที่มีประโยชน์มากต่อไป - คนส่วนใหญ่จะดีกับดวลจุดโทษ - และมันไม่จำเป็นต้องมีขนาดภาพ
เพิ่มเติม 50mb

6
ง่ายและตรงไปตรงมา เวลาส่วนใหญ่เราเพียงแค่เรียกใช้คำสั่ง shitty (ls, ps, อะไรก็ตาม), sh ครอบคลุมสถานการณ์เหล่านั้น ขอบคุณ!
Bevilaqua

6
ฉันกำลังมองหาทุบตี แต่ sh ช่วยด้วย :)
Vedran Maricevic

6
@ kboom bashแพคเกจเพิ่มประมาณ 4MB ถึงขนาดalpine:3.8ประมาณสองเท่า แต่ก็ยังห่างไกลจาก 50MB
valiano

19
RUN /bin/sh -c "apk add --no-cache bash"

ทำงานให้ฉัน


1
ส่วนเริ่มต้นของคำสั่ง RUN นั้นไม่จำเป็น คุณสามารถเขียนRUN apk add --no-cache bashได้โดยตรง
Meiogordo

1

ในการติดตั้ง bash คุณสามารถทำได้:

RUN apk add --update bash && rm -rf /var/cache/apk/*

หากคุณไม่ต้องการเพิ่มขนาดพิเศษให้กับรูปภาพของคุณคุณสามารถใช้ashหรือshจัดส่งด้วยอัลไพน์

การอ้างอิง: https://github.com/smebberson/docker-alpine/issues/43

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.