คำถามติดแท็ก dockerfile

Dockerfile คือไฟล์ที่มีคำแนะนำในการสร้างอิมเมจ Docker

12
แอพ Python ไม่ได้พิมพ์อะไรเลยเมื่อใช้งานตัวแยกออก
ฉันมีแอพ Python (2.7) ที่เริ่มต้นใน dockerfile ของฉัน: CMD ["python","main.py"] main.pyพิมพ์สตริงบางอย่างเมื่อเริ่มทำงานและเข้าสู่ลูปหลังจากนั้น: print "App started" while True: time.sleep(1) ตราบใดที่ฉันเริ่มคอนเทนเนอร์ด้วยแฟล็ก -it ทุกอย่างทำงานได้ตามปกติ: $ docker run --name=myapp -it myappimage > App started และฉันสามารถเห็นผลลัพธ์เดียวกันผ่านบันทึกในภายหลัง: $ docker logs myapp > App started หากฉันพยายามเรียกใช้คอนเทนเนอร์เดียวกันด้วยแฟล็ก -d ดูเหมือนว่าคอนเทนเนอร์จะเริ่มตามปกติ แต่ฉันไม่เห็นผลลัพธ์ใด ๆ : $ docker run --name=myapp -d myappimage > b82db1120fee5f92c80000f30f6bdc84e068bafa32738ab7adb47e641b19b4d1 $ …

10
วิธีตั้งชื่อ Dockerfiles
ฉันไม่แน่ใจว่าจะตั้งชื่อ Dockerfiles อย่างไร หลายคนบน GitHub ใช้Dockerfileโดยไม่มีนามสกุลไฟล์ ฉันให้ชื่อและนามสกุลแก่พวกเขาหรือไม่ ถ้ายังไง? หรือฉันเรียกมันว่าDockerfile?

5
จะกำหนดตัวแปรใน Dockerfile ได้อย่างไร?
ในDockerfileของฉันฉันต้องการกำหนดตัวแปรที่ฉันสามารถใช้ใน Dockerfileได้ในภายหลัง ฉันตระหนักถึงENVคำสั่ง แต่ฉันไม่ต้องการให้ตัวแปรเหล่านี้เป็นตัวแปรสภาพแวดล้อม มีวิธีการประกาศตัวแปรที่ขอบเขต Dockerfileหรือไม่?


1
.build-deps สำหรับ apk add --virtual command คืออะไร?
อะไรคือสิ่งที่.build-depsอยู่ในคำสั่งดังต่อไปนี้หรือไม่? ฉันไม่พบคำอธิบายในเอกสาร Alpine นี่คือไฟล์ที่กำหนดไว้ล่วงหน้าหรือไม่? เห็นสิ่งนี้อ้างถึงใน Dockerfiles จำนวนมาก RUN apk add --no-cache --virtual .build-deps \ gcc \ freetype-dev \ musl-dev RUN pip install --no-cache-dir <packages_that_require_gcc...> \ RUN apk del .build-deps
142 docker  apk  dockerfile  alpine 

8
สร้างและเรียกใช้ Dockerfile ด้วยคำสั่งเดียว
เป็นไปได้ไหมที่จะสร้างอิมเมจจาก Dockerfile และเรียกใช้ด้วยคำสั่งเดียว? มีคำสั่งเดียวdocker buildในการสร้าง Dockerfile และdocker run -itเรียกใช้อิมเมจ มีคำสั่งทั้งสองรวมกันเพื่อให้ง่ายต่อการสร้างและเรียกใช้ด้วยคำสั่งเดียวหรือไม่?
138 docker  dockerfile 

6
ทำความเข้าใจกับคำสั่ง“ VOLUME” ใน DockerFile
ด้านล่างนี้คือเนื้อหาของ "Dockerfile" ของฉัน FROM node:boron # Create app directory RUN mkdir -p /usr/src/app # change working dir to /usr/src/app WORKDIR /usr/src/app VOLUME . /usr/src/app RUN npm install EXPOSE 8080 CMD ["node" , "server" ] ในไฟล์นี้ฉันคาดว่าคำสั่ง "VOLUME. / usr / src / app" เพื่อเมานต์เนื้อหาของไดเรกทอรีทำงานปัจจุบันในโฮสต์ที่จะติดตั้งบน / usr / src / app โฟลเดอร์ของคอนเทนเนอร์ …
136 docker  dockerfile 

4
หลาย RUN เทียบกับ RUN แบบโซ่เดียวใน Dockerfile อะไรจะดีกว่ากัน?
Dockerfile.1ดำเนินการหลายรายการRUN: FROM busybox RUN echo This is the A > a RUN echo This is the B > b RUN echo This is the C > c Dockerfile.2 เข้าร่วมกับพวกเขา: FROM busybox RUN echo This is the A > a &&\ echo This is the B > b &&\ echo This …
134 docker  dockerfile 

8
Dockerfile if else เงื่อนไขกับอาร์กิวเมนต์ภายนอก
ฉันมี Dockerfile FROM centos:7 ENV foo=42 จากนั้นฉันก็สร้างมันขึ้นมา docker build -t my_docker . และเรียกใช้ docker run -it -d my_docker เป็นไปได้ไหมที่จะส่งผ่านอาร์กิวเมนต์จากบรรทัดคำสั่งและใช้ร่วมกับ if else ใน Dockerfile ฉันหมายถึงสิ่งที่ชอบ FROM centos:7 if (my_arg==42) {ENV=TRUE} else: {ENV=FALSE} และสร้างด้วยอาร์กิวเมนต์นี้ docker build -t my_docker . --my_arg=42
132 docker  dockerfile 

12
ติดตั้ง Docker แล้ว แต่ Docker Compose ไม่ใช่? ทำไม?
ฉันได้ติดตั้งนักเทียบท่าบน centos 7 แล้วโดยเรียกใช้คำสั่งต่อไปนี้ curl -sSL https://get.docker.com/ | sh systemctl enable docker && systemctl start docker docker run hello-world หมายเหตุ: helloworld ทำงานได้อย่างถูกต้องและไม่มีปัญหา อย่างไรก็ตามเมื่อฉันพยายามเรียกใช้ docker-compose (มี docker-compose.yml อยู่และถูกต้อง) มันทำให้ฉันมีข้อผิดพลาดใน Centos เท่านั้น (เวอร์ชัน Windows ใช้งานได้ดีสำหรับไฟล์ docker-compose) /usr/local/bin/docker-compose: line 1: {error:Not Found}: command not found

13
standard_init_linux.go: 190: กระบวนการผู้ใช้ exec ทำให้“ ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว” - Docker
เมื่อฉันใช้งานอิมเมจนักเทียบท่าบน windows 10 ฉันได้รับข้อผิดพลาดนี้: standard_init_linux.go:190: exec user process caused "no such file or directory" ไฟล์นักเทียบท่าของฉันคือ: FROM openjdk:8 EXPOSE 8080 VOLUME /tmp ADD appagent.tar.gz /opt/app-agent ADD services.jar app.jar ADD run.sh /run.sh # Install compiler and perl stuff RUN apt-get update RUN apt-get install -y build-essential RUN apt-get install -y gcc-multilib RUN …

2
ARG หรือ ENV จะใช้อันไหนในกรณีนี้
นี่อาจเป็นคำถามเล็กน้อย แต่การอ่านเอกสารสำหรับARGและENVไม่ได้ทำให้ฉันกระจ่าง ฉันกำลังสร้างคอนเทนเนอร์ PHP-FPM และฉันต้องการให้ความสามารถในการเปิด / ปิดส่วนขยายบางอย่างตามความต้องการของผู้ใช้ จะดีมากถ้าสามารถทำได้ใน Dockerfile โดยการเพิ่มเงื่อนไขและส่งแฟล็กบนคำสั่ง build แต่อาจไม่รองรับ AFAIK ในกรณีของฉันและแนวทางส่วนตัวของฉันคือการเรียกใช้สคริปต์ขนาดเล็กเมื่อคอนเทนเนอร์เริ่มทำงานสิ่งต่อไปนี้: #!/bin/sh set -e RESTART="false" # This script will be placed in /config/init/ and run when container starts. if [ "$INSTALL_XDEBUG" == "true" ]; then printf "\nInstalling Xdebug ...\n" yum install -y php71-php-pecl-xdebug RESTART="true" fi ... if …

1
จะส่งอาร์กิวเมนต์ไปยัง Dockerfile ได้อย่างไร?
ฉันใช้คำสั่ง RUN ภายใน a Dockerfileเพื่อติดตั้งรอบต่อนาที RUN yum -y install samplerpm-2.3 อย่างไรก็ตามฉันต้องการส่งค่า "2.3" เป็นอาร์กิวเมนต์ คำสั่ง RUN ของฉันควรมีลักษณะดังนี้: RUN yum -y install samplerpm-$arg ที่ไหน $arg=2.3

2
/ bin / sh: apt-get: ไม่พบ
ฉันกำลังพยายามเปลี่ยน DockerFile ให้ทำงานกับแอสเปลล์ ฉันมีสคริปต์ทุบตีที่ฉันต้องการห่อในท่าเรือ Step 4: Wrap the script in a Docker container. The sample SDK we downloaded earlier contains an example of an action wrapped in a Docker container. In particular, the sample SDK includes a Dockerfile that builds the C program in client/example.c and installs the binary as …

2
docker run -it flag คืออะไร?
ฉันกำลังทำบางสิ่งที่ซับซ้อนกับนักเทียบท่า แต่ปรากฎว่าฉันไม่รู้ว่า-itธงหมายถึงอะไร เมื่อเร็ว ๆ นี้ฉันได้เจอกับตัวอย่างdocker runคำสั่งที่ทำให้ฉันสับสนเล็กน้อย docker run -itd ubuntu:xenial /bin/bash คำถามของฉันคืออะไรคือสิ่งที่ควรเขียน-itแฟล็กที่นี่หากคอนเทนเนอร์ระหว่างการรันbin/bash ในเอกสารประกอบเรามีตัวอย่าง docker run --name test -it debian พร้อมคำอธิบาย -it สั่งให้ Docker จัดสรร pseudo-TTY ที่เชื่อมต่อกับ stdin ของคอนเทนเนอร์ การสร้าง bash shell แบบโต้ตอบในคอนเทนเนอร์ และคำอธิบายสำหรับแฟล็ก -t จากหน้าวิธีใช้ -t, --tty จัดสรร pseudo-TTY ถ้าฉันลบ -it แฟล็กระหว่าง docker run -d ubuntu:xenial /bin/bash คอนเทนเนอร์ที่สร้างขึ้นใหม่ของฉันไม่ได้อยู่มากนัก ใน docker …
118 docker  dockerfile 

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