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

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

9
เชลล์แบบโต้ตอบโดยใช้ Docker Compose
มีวิธีการเริ่มเปลือกโต้ตอบในภาชนะโดยใช้นักเขียนประกอบเท่านั้นหรือไม่ ฉันได้ลองแบบนี้ใน docker-compose.yml ของฉัน: myapp: image: alpine:latest entrypoint: /bin/sh เมื่อฉันเริ่มคอนเทนเนอร์นี้โดยใช้นักเทียบท่าเขียนมันจะออกจากทันที มีแฟล็กใดบ้างที่ฉันสามารถเพิ่มในคำสั่ง entrypoint หรือเป็นและตัวเลือกเพิ่มเติมใน myapp เพื่อเริ่มต้นเป็นเชลล์แบบโต้ตอบ? ฉันรู้ว่ามีตัวเลือกคำสั่ง docker ดั้งเดิมเพื่อให้บรรลุสิ่งนี้เพียงแค่อยากรู้ว่ามันเป็นไปได้โดยใช้เฉพาะ Docker Compose เช่นกัน

13
วิธีการลบอิมเมจ Docker แบบโลคัลทั้งหมด
ฉันเพิ่งเริ่มใช้ Docker และไม่เคยรู้ว่าฉันควรใช้docker-compose downแทนctrl-cหรือdocker-compose stopเพื่อกำจัดการทดลองของฉัน ตอนนี้ฉันมีภาพนักเทียบท่าที่ไม่จำเป็นจำนวนมากในเครื่อง มีธงที่ฉันสามารถเรียกใช้เพื่อลบรูปภาพและคอนเทนเนอร์ของนักเทียบท่าในพื้นที่ได้หรือไม่? บางอย่างเช่น - docker rmi --all --forceธงทั้งหมดไม่มีอยู่ แต่ฉันกำลังมองหาบางอย่างที่มีแนวคิดคล้ายกัน

17
ฉันจะลบภาพของ Docker ได้อย่างไร
ฉันมีภาพต่อไปนี้: alex@alexvps:~$ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE <none> <none> 70c0e19168cf 5 days ago 1.069 GB <none> <none> c2ce80b62174 8 days ago 399.2 MB <none> <none> 60afe4036d97 8 days ago 325.1 MB และเมื่อฉันพยายามลบหนึ่งในนั้นฉันได้รับ: alex@alexvps:~$ sudo docker rmi 60afe4036d97 Error: Conflict, 60afe4036d97 wasn't deleted 2014/01/28 00:54:00 Error: …
265 docker 

15
รหัสผ่านรูทภายในคอนเทนเนอร์ Docker
ฉันใช้อิมเมจ Docker ซึ่งสร้างโดยใช้คำสั่ง USER เพื่อใช้ผู้ใช้ที่ไม่ใช่รูdevท ข้างในคอนเทนเนอร์ฉัน "dev" แต่ฉันต้องการแก้ไข/etc/hostsไฟล์ ดังนั้นฉันต้องเป็นคนรูท ฉันพยายามใช้คำสั่ง su แต่ขอให้ป้อนรหัสผ่านรูท รหัสผ่านเริ่มต้นของผู้ใช้รูทภายในคอนเทนเนอร์ Docker คืออะไร
265 docker 

6
ดูคำสั่งทั้งหมดของการทำงาน / หยุดคอนเทนเนอร์ใน Docker
ฉันจะดูคำสั่งทั้งหมดของคอนเทนเนอร์ / กระบวนการที่ทำงานอยู่ใน Docker ได้อย่างไร $ docker ps --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5b6291859b61 nginx:1.7.8 "nginx -g 'daemon of 4 minutes ago Exited (0) 4 minutes ago thirsty_brattain ฉันสามารถเห็น "nginx -g 'daemon ของ" .. ที่นี่ไม่ใช่คำสั่งเต็ม
263 docker 

10
วิธีการต่อคอนเทนเนอร์ Docker ที่ออก
พิจารณา: docker run -it centos /bin/bash ฉันกดCtrl+ Dเพื่อออก ฉันต้องการเรียกใช้คอนเทนเนอร์นี้ต่อ แต่ฉันพบว่าฉันทำไม่ได้ วิธีเดียวคือ docker commit `docker ps -q -l` my_image docker run -it my_image /bin/bash ฉันถูกไหม? มีวิธีที่ดีกว่านี้ไหม? (ฉันใช้นักเทียบท่า 0.8.0)
263 docker 

11
วิธีการใช้ sudo ภายในตู้เทียบท่า?
ปกติภาชนะนักเทียบท่าจะทำงานโดยใช้ผู้ใช้ราก ฉันต้องการใช้ผู้ใช้อื่นซึ่งไม่มีปัญหาในการใช้คำสั่ง USER ของนักเทียบท่า แต่ผู้ใช้รายนี้ควรใช้sudoภายในคอนเทนเนอร์ได้ คำสั่งนี้หายไป นี่คือ Dockerfile ง่าย ๆ สำหรับจุดประสงค์นี้: FROM ubuntu:12.04 RUN useradd docker && echo "docker:docker" | chpasswd RUN mkdir -p /home/docker && chown -R docker:docker /home/docker USER docker CMD /bin/bash ใช้ภาชนะนี้ฉันเข้าสู่ระบบด้วยผู้ใช้ 'นักเทียบท่า' เมื่อฉันพยายามใช้ sudo คำสั่งไม่พบ ดังนั้นฉันจึงพยายามติดตั้งแพ็กเกจsudoใน Dockerfile ของฉันโดยใช้ RUN apt-get install sudo ส่งผลให้ไม่สามารถระบุตำแหน่งแพ็กเกจ sudo ได้

13
วิธีการเมาท์ไฟล์เดียวในโวลุ่ม
ฉันกำลังพยายามเชื่อมต่อแอปพลิเคชัน php เข้าด้วยกัน ใน dockerfile ฉันจะดาวน์โหลดไฟล์เก็บถาวรแยกมันออกเป็นต้น ทุกอย่างใช้งานได้ดี แต่ถ้ามีเวอร์ชั่นใหม่ออกมาและฉันอัปเดต dockerfile ฉันต้องติดตั้งแอปพลิเคชันใหม่เนื่องจาก config.php ถูกเขียนทับ ดังนั้นฉันคิดว่าฉันสามารถเมานไฟล์เป็นไดรฟ์เหมือนที่ฉันทำกับฐานข้อมูล ฉันลองสองวิธีด้วยระดับเสียงและเส้นทางโดยตรง นักเทียบท่า-เขียน: version: '2' services: app: build: src ports: - "8080:80" depends_on: - mysql volumes: - app-conf:/var/www/html/upload - app-conf:/var/www/html/config.php environment: DB_TYPE: mysql DB_MANAGER: MysqlManager mysql: image: mysql:5.6 container_name: mysql volumes: - mysqldata:/var/lib/mysql ports: - 3306:3306 environment: MYSQL_ROOT_PASSWORD: …

9
วิธีวิเคราะห์การใช้งานดิสก์ของคอนเทนเนอร์ Docker
ฉันเห็นว่า Docker ใช้ระบบไฟล์ของฉัน 12GB: 2.7G /var/lib/docker/vfs/dir 2.7G /var/lib/docker/vfs 2.8G /var/lib/docker/devicemapper/mnt 6.3G /var/lib/docker/devicemapper/devicemapper 9.1G /var/lib/docker/devicemapper 12G /var/lib/docker แต่ฉันจะรู้ได้อย่างไรว่ามันกระจายผ่านตู้คอนเทนเนอร์อย่างไร? ฉันพยายามแนบกับคอนเทนเนอร์โดยเรียกใช้ (คำสั่ง v1.3 ใหม่) docker exec -it <container_name> bash จากนั้นเรียกใช้ 'df -h' เพื่อวิเคราะห์การใช้งานดิสก์ ดูเหมือนว่าจะใช้งานได้ แต่ไม่ใช่กับคอนเทนเนอร์ที่ใช้ 'volume-from' ตัวอย่างเช่นฉันใช้ที่เก็บข้อมูลอย่างเดียวสำหรับ MongoDB เรียกว่า 'mongo-data' เมื่อฉันเรียกใช้docker run -it --volumes-from mongo-data busyboxและจากนั้นdf -hภายในคอนเทนเนอร์มันบอกว่าระบบไฟล์ที่ติดตั้งอยู่บน/data/db(data-only container เท่านั้น 'mongo-data' ของฉัน) ใช้ 11.3G …

4
จะแชร์ Docker-Image โดยไม่ใช้ Docker-Hub ได้อย่างไร?
ฉันสงสัยว่าภาพของ Docker จะถูกเก็บไว้ที่ใดในเครื่องโฮสต์ท้องถิ่น ฉันสามารถแชร์ Docker-Image โดยไม่ต้องใช้Docker-Hubหรือ a Dockerfileแต่เป็น 'ของจริง' Docker-Image ได้หรือไม่? และเกิดอะไรขึ้นเมื่อฉัน 'ดัน' Docker-Image ของฉันไปยัง Docker-Hub

3
สำเนา Dockerfile เก็บโครงสร้างไดเรกทอรีย่อย
ฉันพยายามที่จะคัดลอกไฟล์และโฟลเดอร์จำนวนมากไปยังรูปภาพของนักสร้างท่าจาก localhost ของฉัน ไฟล์เป็นดังนี้: folder1 file1 file2 folder2 file1 file2 ฉันพยายามทำสำเนาเช่นนี้: COPY files/* /files/ อย่างไรก็ตามไฟล์ทั้งหมดจะอยู่ใน / files / มีวิธีใดบ้างใน Docker เพื่อรักษาโครงสร้างไดเรกทอรีย่อยรวมทั้งคัดลอกไฟล์ไปยังไดเรกทอรีของพวกเขา
257 copy  docker  dockerfile 

7
นักเทียบท่าเรียกใช้ <IMAGE> <คำสั่งหลายรายการ>
ฉันพยายามเรียกใช้คำสั่ง MULTIPLE เช่นนี้ docker run image cd /path/to/somewhere &amp;&amp; python a.py แต่สิ่งนี้ทำให้ฉัน "ไม่มีไฟล์หรือไดเรกทอรี" ข้อผิดพลาดเพราะมันถูกตีความว่าเป็น ... "docker run image cd /path/to/somewhere" &amp;&amp; "python a.py" ดูเหมือนว่าจำเป็นต้องใช้อักขระ ESCAPE บางตัวเช่น "" หรือ () ดังนั้นฉันก็ลอง docker run image "cd /path/to/somewhere &amp;&amp; python a.py" docker run image (cd /path/to/somewhere &amp;&amp; python a.py) แต่สิ่งเหล่านี้ใช้ไม่ได้ ฉันค้นหาDocker Run Reference …

6
รับค่าตัวแปรสภาพแวดล้อมใน Dockerfile
ฉันกำลังสร้างตู้คอนเทนเนอร์สำหรับแอปทับทิม การกำหนดค่าแอพของฉันมีอยู่ในตัวแปรสภาพแวดล้อม (โหลดภายในแอพด้วยdotenv ) หนึ่งในตัวแปรการกำหนดค่าเหล่านั้นคือ public ip ของแอพซึ่งใช้ภายในเพื่อสร้างลิงก์ ฉันต้องเพิ่มรายการ dnsmasq ที่ชี้ ip นี้ไปที่ 127.0.0.1 ภายในคอนเทนเนอร์เพื่อให้สามารถดึงลิงก์ของแอปราวกับว่ามันไม่ได้ถูกจัดเก็บ ฉันจึงพยายามตั้งค่าENVใน Dockerfile ของฉันซึ่งจะส่งผ่านตัวแปรสภาพแวดล้อมไปยังคอนเทนเนอร์ ฉันลองบางสิ่ง ENV REQUEST_DOMAIN $REQUEST_DOMAIN ENV REQUEST_DOMAIN `REQUEST_DOMAIN` ทุกอย่างผ่านสตริง "REQUEST_DOMAIN" แทนที่จะเป็นค่าของตัวแปรสภาพแวดล้อม มีวิธีส่งค่าตัวแปรสภาพแวดล้อมจากเครื่องโฮสต์ไปยังคอนเทนเนอร์หรือไม่?
254 docker 

13
การสื่อสารระหว่างโครงการสร้างนักเทียบท่าหลายโครงการ
ฉันมีสองdocker-compose.ymlไฟล์แยกกันในสองโฟลเดอร์: ~/front/docker-compose.yml ~/api/docker-compose.yml ฉันจะแน่ใจได้อย่างไรว่าคอนเทนเนอร์ในfrontสามารถส่งคำขอไปยังคอนเทนเนอร์ในได้apiอย่างไร ฉันรู้ว่า--default-gatewayตัวเลือกที่สามารถตั้งค่าการใช้docker runสำหรับภาชนะแต่ละคนเพื่อให้ที่อยู่ที่ระบุ IP สามารถกำหนดให้กับคอนเทนเนอร์นี้ docker-composeแต่ดูเหมือนว่าตัวเลือกนี้ไม่สามารถใช้ได้เมื่อใช้ ขณะนี้ฉันสิ้นสุดการทำdocker inspect my_api_container_idและดูเกตเวย์ในผลลัพธ์ มันใช้งานได้ แต่ปัญหาก็คือว่า IP นี้มีการสุ่มมาดังนั้นฉันไม่สามารถวางใจได้ คำถามอีกรูปแบบหนึ่งอาจเป็นเช่นนี้: ฉันสามารถกำหนดที่อยู่ IP คงที่ให้กับคอนเทนเนอร์เฉพาะโดยใช้นักเทียบท่าเขียนได้หรือไม่ แต่ในที่สุดสิ่งที่ฉันดูแลคือ: โครงการนักแต่งเพลงที่แตกต่างกันสองโครงการสามารถสื่อสารกันได้อย่างไร

9
วิธีเริ่มคอนเทนเนอร์ Docker ที่หยุดทำงานด้วยคำสั่งอื่น
ฉันต้องการเริ่มต้นนักเทียบท่าคอนเทนเนอร์ที่หยุดด้วยคำสั่งอื่นเนื่องจากคำสั่งเริ่มต้นขัดข้อง - หมายความว่าฉันไม่สามารถเริ่มคอนเทนเนอร์แล้วใช้ 'นักเทียบท่า exec' โดยทั่วไปฉันต้องการเริ่มเปลือกเพื่อให้ฉันสามารถตรวจสอบเนื้อหาของภาชนะ โชคดีที่ฉันสร้างคอนเทนเนอร์ด้วยตัวเลือก -it!
251 docker 

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