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

นักเทียบท่าเป็นเครื่องมือในการสร้างและเรียกใช้ภาชนะบรรจุ คำถามเกี่ยวกับนักเทียบท่าการปฏิบัติการและสถาปัตยกรรมเป็นที่ยอมรับ คำถามเกี่ยวกับการใช้งานนักเทียบท่าในการผลิตอาจพบการตอบสนองที่ดีขึ้นใน ServerFault (https://serverfault.com/) แท็กนักเทียบท่าไม่ค่อยได้ใช้คนเดียวและมักจะจับคู่กับแท็กอื่น ๆ เช่นนักแต่งและนักแต่งเพลง

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 

3
ใครช่วยอธิบาย docker.sock
ฉันพยายามทำความเข้าใจเหตุผลที่แท้จริงของการติดตั้งdocker.sockในdocker-compose.ymlไฟล์ มีไว้สำหรับการค้นหาอัตโนมัติหรือไม่ volumes: - /var/run/docker.sock:/var/run/docker.sock
131 docker 

1
นักเทียบท่า - แต่งขึ้นเทียบกับนักเทียบท่า - เขียนขึ้น - สร้างเทียบกับนักเทียบท่า - เขียนบิลด์ - ไม่มีแคช
ฉันคิดไม่ออกว่ามันต่างกันอย่างไร docker-compose up docker-compose up --build docker-compose build --no-cache มีคำสั่งสำหรับupไม่มีแคชหรือไม่?

9
จะรัน Nginx ภายใน Docker container โดยไม่หยุดได้อย่างไร
ฉันติดตั้ง Nginx บนคอนเทนเนอร์ Docker แล้วและกำลังพยายามเรียกใช้เช่นนี้: docker run -i -t -p 80:80 mydockerimage /usr/sbin/nginx ปัญหาคือวิธีการทำงานของ Nginx คือกระบวนการเริ่มต้นจะสร้างกระบวนการ Nginx หลักและคนงานบางส่วนทันทีจากนั้นจึงหยุดทำงาน เนื่องจาก Docker กำลังเฝ้าดู PID ของคำสั่งดั้งเดิมเท่านั้นคอนเทนเนอร์จึงหยุดลง ฉันจะป้องกันไม่ให้ภาชนะหยุดทำงานได้อย่างไร ฉันต้องสามารถบอกให้เชื่อมโยงกับกระบวนการลูกแรกหรือหยุดกระบวนการเริ่มต้นของ Nginx ไม่ให้ออก
130 linux  nginx  docker 

3
ฉันควรใช้ Docker-compose up หรือ run?
มีเหตุผลที่จะใช้runในการเริ่มต้นdocker-compose.ymlไฟล์หรือคุณควรใช้up? ฉันเข้าใจว่าrunสามารถเริ่มคอนเทนเนอร์เฉพาะได้ แต่ฉันหมายถึงกรณีที่คุณใช้โดยไม่ได้ระบุคอนเทนเนอร์เพื่อให้เริ่มต้นคอนเทนเนอร์ yml ทั้งหมดของคุณ

8
นักเทียบท่า: ใช้นาโนในคอนเทนเนอร์นักเทียบท่า
ฉันเปิดเปลือกโต้ตอบลงในคอนเทนเนอร์ docker เช่นนั้น sudo docker exec -t -i {container_name} bash จนถึงตอนนี้ดีมาก แต่พยายามที่จะเรียกใช้nanoผลลัพธ์ใน: เกิดข้อผิดพลาดในการเปิดเทอร์มินัล: ไม่ทราบ
128 docker 

4
จะหลีกเลี่ยงการติดตั้งแพ็คเกจใหม่เมื่อสร้างอิมเมจ Docker สำหรับโครงการ Python ได้อย่างไร
Dockerfile ของฉันเป็นเช่น FROM my/base ADD . /srv RUN pip install -r requirements.txt RUN python setup.py install ENTRYPOINT ["run_server"] ทุกครั้งที่สร้างอิมเมจใหม่ต้องติดตั้งการอ้างอิงใหม่ซึ่งอาจช้ามากในภูมิภาคของฉัน วิธีหนึ่งที่ฉันนึกถึงcacheแพ็คเกจที่ติดตั้งคือการแทนที่my/baseรูปภาพด้วยรูปภาพที่ใหม่กว่าเช่นนี้: docker build -t new_image_1 . docker tag new_image_1 my/base ในครั้งต่อไปที่ฉันสร้างด้วย Dockerfile นี้ / ฐานของฉันได้ติดตั้งแพ็คเกจบางอย่างแล้ว แต่วิธีนี้มีปัญหาสองประการ: ไม่สามารถลบล้างรูปภาพพื้นฐานได้เสมอไป ภาพฐานจะใหญ่ขึ้นเรื่อย ๆ เมื่อภาพใหม่ ๆ ถูกจัดวางเป็นเลเยอร์ ฉันจะใช้ทางออกใดที่ดีกว่าในการแก้ปัญหานี้ได้ แก้ไข ##: ข้อมูลบางอย่างเกี่ยวกับนักเทียบท่าในเครื่องของฉัน: ☁ test docker version Client …
128 python  docker 

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

9
รับตัวแปรสภาพแวดล้อมจาก Docker Container
วิธีที่ง่ายที่สุดในการรับตัวแปรสภาพแวดล้อมจากคอนเทนเนอร์นักเทียบท่าที่ยังไม่ได้ประกาศใน Dockerfileคืออะไร ตัวอย่างเช่นตัวแปรสภาพแวดล้อมที่ถูกตั้งค่าผ่านบางdocker exec container /bin/bashเซสชัน? ฉันทำได้docker exec container env | grep ENV_VARแต่ฉันต้องการสิ่งที่คืนค่ามากกว่า ฉันได้ลองใช้docker exec container echo "$ENV_VAR"แล้ว แต่การแทนที่ดูเหมือนจะเกิดขึ้นนอกคอนเทนเนอร์ดังนั้นฉันจึงไม่ได้รับ env var จากคอนเทนเนอร์ แต่เป็นการแทนที่ env var จากคอมพิวเตอร์ของฉันเอง ขอบคุณ

6
การตั้งค่า MySQL และการนำเข้าดัมพ์ภายใน Dockerfile
ฉันกำลังพยายามตั้งค่า Dockerfile สำหรับโปรเจ็กต์ LAMP ของฉัน แต่ฉันมีปัญหาเล็กน้อยเมื่อเริ่ม MySQL ฉันมีบรรทัดต่อไปนี้บน Dockerfile ของฉัน: VOLUME ["/etc/mysql", "/var/lib/mysql"] ADD dump.sql /tmp/dump.sql RUN /usr/bin/mysqld_safe & sleep 5s RUN mysql -u root -e "CREATE DATABASE mydb" RUN mysql -u root mydb < /tmp/dump.sql แต่ฉันได้รับข้อผิดพลาดนี้เรื่อย ๆ : ERROR 2002 (HY000): Can't connect to local MySQL server through socket …
127 mysql  docker 

5
ฉันจะเมานต์ไดเร็กทอรีโฮสต์เป็นไดรฟ์ข้อมูลใน Docker compose ได้อย่างไร
ฉันมีสภาพแวดล้อมการพัฒนาที่ฉันกำลังเทียบท่าและฉันต้องการความสามารถในการโหลดการเปลี่ยนแปลงของฉันโดยไม่ต้องสร้างอิมเมจนักเทียบท่าใหม่ ฉันใช้นักเทียบท่าเขียนเพราะ redis เป็นหนึ่งในการอ้างอิงของแอปของฉันและฉันชอบที่จะสามารถเชื่อมโยงคอนเทนเนอร์ redis ได้ ฉันมีสองคอนเทนเนอร์ที่กำหนดไว้ในdocker-compose.yml: node: build: ./node links: - redis ports: - "8080" env_file: - node-app.env redis: image: redis ports: - "6379" ฉันได้มาถึงจุดในnodeDockerfile ของแอปที่ฉันเพิ่มโวลุ่ม แต่ฉันจะเมานต์ไดเร็กทอรีของโฮสต์ในไดรฟ์ข้อมูลได้อย่างไรเพื่อให้การแก้ไขโค้ดทั้งหมดของฉันปรากฏในคอนเทนเนอร์ นี่คือ Dockerfile ปัจจุบันของฉัน: # Set the base image to Ubuntu FROM node:boron # File Author / Maintainer MAINTAINER Amin Shah Gilani <amin@gilani.me> …

4
ฉันจะใช้อิมเมจในเครื่องเป็นอิมเมจพื้นฐานกับ Dockerfile ได้อย่างไร
ฉันกำลังทำงานกับ Dockerfile ฉันเพิ่งรู้ว่าฉันใช้FROMกับภาพที่จัดทำดัชนีมาตลอด ดังนั้นฉันจึงสงสัยว่า: ฉันจะใช้รูปภาพในเครื่อง (กำหนดเอง) ของฉันเป็นรูปฐาน ( FROM) โดยไม่มีpushingดัชนีได้อย่างไร
126 docker 

6
Docker Machine: ไม่มีพื้นที่เหลือบนอุปกรณ์
ฉันกำลังพยายามตั้งค่า Docker Machine ด้วย Docker Compose สถานการณ์ที่ 1 (โดยไม่ใช้ Docker Machine) หากฉันรันdocker-compose up -dโดยไม่ใช้Docker Machine มันจะสร้างคอนเทนเนอร์ที่เชื่อมโยง 3 ของฉันเป็น intented (nginx + mongodb + nodejs) สถานการณ์ที่ 2 (มีหาง Machine) แล้วฉันสร้าง VM eval $(docker-machine env streambacker-dev)โดยใช้หางเครื่องจักรและบอกเทียบท่าที่จะพูดคุยกับเครื่องที่มี ณ จุดนี้ถ้าฉันไปที่เครื่องเทียบท่าและเรียกใช้df -hฉันจะได้รับ: ถ้าฉันเรียกใช้docker-compose up -dฉันได้รับข้อผิดพลาด "ไม่เหลือพื้นที่บนอุปกรณ์"ขณะดาวน์โหลดคอนเทนเนอร์สุดท้าย "tmpfs" ดูเหมือนจะเต็มแล้วหลังจากนั้น: การตรวจสอบตัวเลือก--virtualbox-disk-sizeแสดงว่าค่าเริ่มต้นคือ 20000 MB ซึ่งฉันคิดว่าเป็นสิ่งที่เราเห็นเป็น "/ dev / …

13
ไม่สามารถเข้าสู่ระบบบัญชี Docker
OS: Ubuntu 18.04 Server Docker 18.3 CE ฉันเข้าสู่เซิร์ฟเวอร์จากแล็ปท็อป Windows 10 ของฉันโดยใช้เซสชัน PuTTY SSH ฉันไม่มี Docker บนแล็ปท็อป Windows ในเครื่องดังนั้นงานทั้งหมดจึงเสร็จสิ้นบนเซิร์ฟเวอร์ระยะไกล ฉันสามารถเรียกใช้คำสั่ง Docker ทั้งหมดบนเซิร์ฟเวอร์ระยะไกลโดยใช้เซสชันเทอร์มินัล อย่างไรก็ตามเมื่อฉันพยายามบันทึกภาพไปยัง Docker hub เมื่อฉันพยายามเข้าสู่ระบบโดยใช้: docker login ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: error getting credentials - err: exit status 1, out: `GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.secrets was not provided by any .service files` ฉันไม่ได้รับข้อความแสดงข้อผิดพลาดใด ๆ …
125 docker 

11
ฉันจะให้คอนเทนเนอร์ทำงานบน Kubernetes ได้อย่างไร
ตอนนี้ฉันกำลังพยายามเรียกใช้คอนเทนเนอร์ธรรมดาด้วยเชลล์ (/ bin / bash) บนคลัสเตอร์ Kubernetes ฉันคิดว่ามีวิธีที่จะทำให้คอนเทนเนอร์ทำงานบน Docker container โดยใช้pseudo-ttyและแยกตัวเลือก ( -tdตัวเลือกdocker runคำสั่ง) ตัวอย่างเช่น, $ sudo docker run -td ubuntu:latest มีตัวเลือกเช่นนี้ใน Kubernetes หรือไม่ ฉันได้ลองเรียกใช้คอนเทนเนอร์โดยใช้kubectl run-containerคำสั่งเช่น: kubectl run-container test_container ubuntu:latest --replicas=1 แต่คอนเทนเนอร์จะออกไปสองสามวินาที (เช่นเดียวกับการเรียกใช้ด้วยdocker runคำสั่งโดยไม่มีตัวเลือกที่ฉันกล่าวถึงข้างต้น) และ ReplicationController เรียกใช้ซ้ำอีกครั้ง มีวิธีทำให้คอนเทนเนอร์ทำงานบน Kubernetes เหมือน-tdตัวเลือกในdocker runคำสั่งหรือไม่

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