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

การเขียนเป็นเครื่องมือสำหรับการกำหนดและเรียกใช้แอพพลิเคชั่นที่ซับซ้อนด้วย Docker ด้วย Compose คุณกำหนดแอปพลิเคชั่นที่มีหลายคอนเทนเนอร์ในไฟล์เดียวจากนั้นหมุนแอปพลิเคชันของคุณในคำสั่งเดียวซึ่งทำทุกอย่างที่ต้องทำเพื่อให้แอปพลิเคชันทำงานได้



11
นักเทียบท่าเขียนเทียบกับ Dockerfile - ไหนดีกว่ากัน?
ฉันได้อ่านและเรียนรู้เกี่ยวกับDockerและพยายามเลือกการตั้งค่า Django ที่จะใช้อย่างถูกต้อง จนถึงตอนนี้ก็มี: นักแต่งเพลงเขียนหรือDockerfile ฉันเข้าใจว่าDockerfilesใช้Docker Composeแล้ว แต่ฉันไม่แน่ใจว่าเป็นการดีหรือไม่ที่จะวางทุกอย่างไว้ใน Dockerfile ขนาดใหญ่ที่มีหลายFROMคำสั่งสำหรับรูปภาพที่แตกต่างกัน? ฉันต้องการใช้ภาพที่แตกต่างกันหลายอย่างซึ่งรวมถึง: uwsgi nginx postgres redis rabbitmq celery with cron โปรดให้คำแนะนำในสิ่งที่เป็นแนวปฏิบัติที่ดีในการตั้งค่าประเภทของสิ่งแวดล้อมนี้โดยใช้หาง ถ้ามันจะช่วยให้ผมบน Mac เพื่อใช้boot2docker ปัญหาบางอย่างที่ฉันมี: ส่วนประกอบของนักเทียบท่าใช้งานไม่ได้กับ Python3 ฉันต้องการจัดโครงงานของฉันดังนั้นถ้าหนึ่ง Dockerfile ขนาดใหญ่ไม่เหมาะฉันก็รู้สึกว่าฉันจะต้องเลิกใช้ Docker Compose ฉันโอเคที่จะทำให้โปรเจ็กต์ Py2 & Py3 เข้ากันได้ดังนั้นฉันจึงมุ่งไปที่ django-compose

8
วิธีรีสตาร์ทคอนเทนเนอร์เดียวที่มีตัวเชื่อมต่อประกอบด้วย
ฉันมีdocker-compose.ymlไฟล์ที่มี 4 คอนเทนเนอร์: redis, postgres, api, คนทำงาน ในระหว่างการพัฒนาของผู้ปฏิบัติงานฉันมักต้องเริ่มต้นใหม่เพื่อใช้การเปลี่ยนแปลง มีวิธีที่ดีในการรีสตาร์ทคอนเทนเนอร์ (เช่นworker) โดยไม่รีสตาร์ทคอนเทนเนอร์อื่นหรือไม่?

8
อะไรคือข้อแตกต่างระหว่าง Docker Compose และ Kubernetes
ในขณะที่ดำน้ำใน Docker, Google Cloud และ Kubernetes และยังไม่เข้าใจทั้งสามอย่างชัดเจนดูเหมือนว่าผลิตภัณฑ์เหล่านี้ซ้อนทับกัน แต่ฉันไม่สามารถใช้งานร่วมกันได้ ตัวอย่างเช่นdocker-compose.ymlไฟล์ต้องเขียนใหม่เพื่อให้แอปสามารถปรับใช้กับ Kubernetes บางคนสามารถให้คำอธิบายในระดับสูงอย่างคร่าวๆว่า Docker, Docker Compose, Docker Cloud และ Kubernetes ทับซ้อนกันและที่หนึ่งขึ้นอยู่กับอีกหรือไม่

16
นักเทียบท่าเขียนรอภาชนะ X ก่อนเริ่ม Y
ฉันกำลังใช้ rabbitmq และตัวอย่างงูเหลือมง่ายๆจากที่นี่ พร้อมกับนักเทียบท่าเขียน ปัญหาของฉันคือฉันต้องรอให้ rabbitmq เริ่มต้นอย่างเต็มที่ จากสิ่งที่ฉันค้นหาจนถึงตอนนี้ฉันไม่รู้ว่าจะรอด้วย container x (ใน case case ของฉัน) จนกว่า y (rabbitmq) จะเริ่มขึ้น ฉันพบบล็อกนี้ที่เขาตรวจสอบว่าโฮสต์อื่น ๆ ออนไลน์อยู่หรือไม่ ฉันก็พบคำสั่งนักเทียบท่านี้: รอ การใช้งาน: นักเทียบท่ากำลังรอ CONTAINER [CONTAINER ... ] บล็อกจนกว่าคอนเทนเนอร์จะหยุดจากนั้นพิมพ์รหัสออก การรอให้ตู้คอนเทนเนอร์หยุดนั้นอาจไม่ใช่สิ่งที่ฉันกำลังมองหา แต่ถ้าเป็นเช่นนั้นเป็นไปได้ไหมที่จะใช้คำสั่งนั้นใน docker-compose.yml วิธีแก้ปัญหาของฉันคือรอสักครู่และตรวจสอบพอร์ต แต่นี่เป็นวิธีที่จะทำให้สำเร็จหรือไม่ ถ้าฉันไม่รอฉันได้รับข้อผิดพลาด นักเทียบท่า-compose.yml worker: build: myapp/. volumes: - myapp/.:/usr/src/app:ro links: - rabbitmq rabbitmq: image: rabbitmq:3-management หลามสวัสดีตัวอย่าง …

15
วิธีแก้ไขตัวเทียบท่า: ได้รับการปฏิเสธปัญหา
ฉันติดตั้ง Docker ในเครื่องที่ฉันใช้ Ubuntu OS หลังจากฉันติดตั้งนักเทียบท่าเมื่อฉันทำงาน sudo docker run hello-world ไม่เป็นไร แต่ฉันต้องการซ่อนคำsudoเพื่อทำให้คำสั่งสั้นลง ถ้าฉันเขียนคำสั่งโดยไม่มีคำว่า sudo docker run hello-world ที่แสดงต่อไปนี้: docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.See 'docker run --help'. มันเกิดขึ้นแบบเดียวกันเมื่อฉันพยายามทำ docker-compose up ฉันจะแก้ไขปัญหานี้ได้อย่างไร

19
จะใช้ภาพ Docker ท้องถิ่นกับ Minikube ได้อย่างไร?
ฉันมีภาพนักเทียบท่าหลายภาพที่ฉันต้องการใช้ด้วย minikubeผมมีภาพนักเทียบท่าหลายอย่างที่ฉันต้องการที่จะใช้กับฉันไม่ต้องการอัปโหลดก่อนแล้วจึงดาวน์โหลดภาพเดียวกันแทนที่จะใช้ภาพในเครื่องโดยตรง ฉันจะทำสิ่งนี้ได้อย่างไร สิ่งที่ฉันพยายาม: 1. ฉันลองใช้คำสั่งเหล่านี้ (แยกกัน, ลบอินสแตนซ์ของ minikube ทั้งสองครั้งและเริ่มใหม่) kubectl run hdfs --image=fluxcapacitor/hdfs:latest --port=8989 kubectl run hdfs --image=fluxcapacitor/hdfs:latest --port=8989 imagePullPolicy=Never ผลผลิต: NAME READY STATUS RESTARTS AGE hdfs-2425930030-q0sdl 0/1 ContainerCreating 0 10m มันติดอยู่กับสถานะบางอย่าง แต่ไม่ถึงสถานะพร้อม 2. ฉันพยายามสร้างรีจิสตรีแล้วใส่รูปภาพเข้าไป แต่มันก็ไม่ได้ผลเหมือนกัน ฉันอาจทำอย่างไม่ถูกต้อง แต่ฉันไม่สามารถหาคำแนะนำที่เหมาะสมในการทำงานนี้ โปรดให้คำแนะนำในการใช้อิมเมจ docker แบบโลคัลในอินสแตนซ์ kubernetes ท้องถิ่น ระบบปฏิบัติการ: ubuntu 16.04 Docker: Docker รุ่น …

3
ความแตกต่างระหว่างลิงก์และ depend_on ใน docker_compose.yml
ตามเอกสารประกอบการเขียนของไฟล์ Docker Compose : depends_on - แสดงการพึ่งพาระหว่างบริการอย่างชัดเจน links- เชื่อมโยงไปยังภาชนะในการให้บริการอื่นและยังแสดงการพึ่งพาระหว่างบริการในลักษณะเดียวกับdepends_on ฉันไม่เข้าใจวัตถุประสงค์ของการเชื่อมโยงไปยังคอนเทนเนอร์อื่นดังนั้นความแตกต่างระหว่างสองตัวเลือกยังคงเป็นเรื่องยากสำหรับฉัน มันจะง่ายขึ้นถ้ามีตัวอย่าง แต่ฉันไม่สามารถหาได้ ฉันสังเกตเห็นเมื่อฉันเชื่อมโยงคอนเทนเนอร์ B กับคอนเทนเนอร์ A คอนเทนเนอร์ B จะเป็น "pingable" ภายในเชลล์ของคอนเทนเนอร์ A ฉันวิ่งping Bเข้าไปใน container A bashและได้ผลเช่นนี้ (เพื่อการอ้างอิงภาพจากอินเทอร์เน็ต)

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ธงทั้งหมดไม่มีอยู่ แต่ฉันกำลังมองหาบางอย่างที่มีแนวคิดคล้ายกัน

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: …

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 คงที่ให้กับคอนเทนเนอร์เฉพาะโดยใช้นักเทียบท่าเขียนได้หรือไม่ แต่ในที่สุดสิ่งที่ฉันดูแลคือ: โครงการนักแต่งเพลงที่แตกต่างกันสองโครงการสามารถสื่อสารกันได้อย่างไร


10
วิธีการสร้างคอนเทนเนอร์นักเทียบท่าใน docker-compose.yml
มีขอบเขตของบริการที่กำหนดไว้ใน docker-compose.yml บริการเหล่านี้เริ่มต้นแล้ว ฉันจำเป็นต้องสร้างใหม่เพียงหนึ่งสิ่งเหล่านี้และเริ่มต้นโดยไม่มีบริการอื่น ๆ ฉันรันคำสั่งต่อไปนี้: docker-compose up -d # run all services docker-compose stop nginx # stop only one. but it still running !!! docker-compose build --no-cache nginx docker-compose up -d --no-deps # link nginx to other services ในตอนท้ายฉันได้รับ nginx container เก่า โดยนักเทียบท่าเขียนไม่ได้ฆ่าภาชนะที่ใช้งานทั้งหมด!

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