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

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

11
ปลอดภัยหรือไม่ที่จะทำความสะอาดนักเทียบท่า / โอเวอร์เลย์ 2 /
ฉันมีคอนเทนเนอร์นักเทียบท่าที่ทำงานบน AWS EC2 โฟลเดอร์ / var / lib / docker / overlay2 มีขนาดดิสก์เติบโตเร็วมาก ฉันสงสัยว่าการลบเนื้อหานั้นปลอดภัยหรือไม่? หรือถ้านักเทียบท่ามีคำสั่งบางอย่างเพื่อเพิ่มการใช้งานดิสก์บางอย่าง อัพเดท: ฉันได้ลองdocker system prune -aแล้วซึ่งเรียกคืน 0Kb นอกจากนี้ขนาดดิสก์ / docker / overlay2 ของฉันยังใหญ่กว่าเอาต์พุตจากไฟล์ docker system df หลังจากอ่านเอกสารนักเทียบท่าและคำตอบของ BMitch ฉันเชื่อว่าเป็นความคิดที่โง่เขลาที่จะแตะโฟลเดอร์นี้และฉันจะลองวิธีอื่นในการเรียกคืนพื้นที่ดิสก์ของฉัน

2
นักเทียบท่าจะเปิดเผยพอร์ตทั้งหมดหรือช่วงของพอร์ตตั้งแต่ 7000 ถึง 8000
ฉันสามารถระบุช่วงพอร์ตใน Dockerfile ได้หรือไม่ EXPOSE 7000-8000 และเมื่อเรียกใช้คอนเทนเนอร์ผูกพอร์ตที่เปิดเผยเหล่านี้ทั้งหมดเข้ากับพอร์ตเดียวกันบนเครื่องโฮสต์? docker run -p 7000-8000:7000-8000
101 docker  dockerfile 

4
ฉันจะเรียกใช้อินสแตนซ์นักเทียบท่าจาก DockerFile ได้อย่างไร
ในที่สุดฉันก็คิดหาวิธีทำให้นักเทียบท่าทำงานได้ docker run --name my-forum-nodebb --link my-forum-redis:redis -p 80:80 -p 443:443 -p 4567:4567 -P -t -i nodebb/docker:ubuntu ฉันเชื่อมโยงกับอินสแตนซ์ redis เจ๋งมาก ตั้งแต่เริ่มต้นและฉันคิดว่าเมื่อฉันสร้างอินสแตนซ์ redis docker run --name my-forum-redis -d -p 6379:6379 nodebb/docker:ubuntu-redis มันดึงภาพจาก repo ระยะไกล? NodeBB เสนอDockerfile https://github.com/NodeBB/NodeBB/blob/master/Dockerfileฉันไม่ค่อยแน่ใจว่าจะใช้มันอย่างไร ฉันสมมติว่าฉันสามารถสร้างสภาพแวดล้อมภายในเครื่องได้โดยเรียก Dockerfile นี้บนรีโมทของฉัน ถูกต้องหรือไม่ ถ้าเป็นเช่นนั้นฉันจะสร้างอินสแตนซ์ภายในที่ชี้ไปที่รีโมทได้อย่างไร

5
เหตุใดฉันจึงใช้ Docker CMD หลายครั้งเพื่อเรียกใช้บริการหลาย ๆ บริการไม่ได้
ฉันได้สร้างอิมเมจพื้นฐานจาก Dockerfile ชื่อ centos + ssh ใน Dockerfile ของ centos + ssh ฉันใช้ CMD เพื่อเรียกใช้บริการ ssh จากนั้นฉันต้องการสร้างอิมเมจเพื่อเรียกใช้บริการอื่นที่ชื่อ rabbitmq Dockerfile: FROM centos+ssh EXPOSE 22 EXPOSE 4149 CMD /opt/mq/sbin/rabbitmq-server start ในการเริ่มต้น rabbitmq container, ให้รัน: docker run -d -p 222:22 -p 4149:4149 rabbitmq แต่บริการ ssh ใช้ไม่ได้มันรู้สึกว่า Dockerfile CMD ของ rabbitmq แทนที่ CMD ของ …
101 docker 

5
อัพเดต k8s ConfigMap หรือ Secret โดยไม่ต้องลบที่มีอยู่
ฉันใช้ K8S ConfigMap และ Secret เพื่อจัดการคุณสมบัติของเรา การออกแบบของฉันค่อนข้างเรียบง่ายที่เก็บไฟล์คุณสมบัติไว้ใน git repo และใช้ build server เช่น Thoughtworks GO เพื่อปรับใช้โดยอัตโนมัติเป็น ConfigMaps หรือ Secrets (ตามเงื่อนไขที่เลือก) กับคลัสเตอร์ k8s ของฉัน ตอนนี้ฉันพบว่ามันไม่มีประสิทธิภาพจริงๆที่ฉันจะต้องลบ ConfigMap และ Secret ที่มีอยู่เสมอและสร้างอันใหม่เพื่ออัปเดตดังนี้: kubectl delete configmap foo kubectl create configmap foo --from-file foo.properties มีวิธีที่ดีและเรียบง่ายในการทำขั้นตอนเดียวและมีประสิทธิภาพมากกว่าการลบปัจจุบันหรือไม่? สิ่งที่ฉันกำลังทำอยู่ในตอนนี้อาจทำให้คอนเทนเนอร์ที่ใช้ configmaps เหล่านี้เสียหายหากพยายามต่อเชื่อมในขณะที่ configmap เก่าถูกลบและยังไม่ได้สร้างใหม่

7
Docker Toolbox - Localhost ไม่ทำงาน
ดังนั้นฉันจึงใช้ Docker Toolbox เพราะฉันไม่มี Hyper-V ในเครื่องเนื่องจากไม่ใช่ Windows 10 pro ทุกอย่างดูเหมือนจะทำงานได้ดี แต่เมื่อฉันพยายามเปิดเบราว์เซอร์0.0.0.0:80มันจะส่งคืนฉันเสมอ: ไม่สามารถเข้าถึงไซต์นี้ได้ แต่เมื่อฉันเรียกใช้คำสั่ง: docker container psฉันได้รับสิ่งต่อไปนี้: 0.0.0.0:80->80/tcpหมายความว่าที่อยู่นี้ควรใช้งานได้ ฉันค้นหาปัญหา stackoverflow และ github ตอนนี้ผมติดงาน ฉันพลาดอะไรไปรึเปล่า? ขอบคุณมาร์ค แก้ไข: โดยใช้ผลตอบแทนฉันdocker-machine ip default 192.168.99.100ฉันรันบนพอร์ต 80 ฉันยังคงได้ผลลัพธ์เหมือนเดิมยกเว้นว่าแอดเดรสกลายเป็น ID คอนเทนเนอร์:https://fd677edg12 ฉันรันคำสั่งนั้นบน cmd เพื่อค้นหา ipv4 ของฉัน: cmd /k ipconfig /all. ใส่ผลลัพธ์ด้วยพอร์ตและส่งคืนสิ่งเดียวกัน:https://fd677edg12

6
จะย้ายคอนเทนเนอร์ Docker ระหว่างโฮสต์ต่างๆได้อย่างไร
ฉันไม่พบวิธีการย้ายนักเทียบท่าที่ใช้คอนเทนเนอร์จากโฮสต์หนึ่งไปยังอีกโฮสต์หนึ่ง มีวิธีใดบ้างที่ฉันสามารถดันคอนเทนเนอร์ของฉันไปยังที่เก็บได้เหมือนกับที่เราทำกับรูปภาพ ขณะนี้ฉันไม่ได้ใช้ปริมาณข้อมูลเพื่อจัดเก็บข้อมูลที่เกี่ยวข้องกับแอปพลิเคชันที่ทำงานภายในคอนเทนเนอร์ ดังนั้นข้อมูลบางส่วนจึงอยู่ในคอนเทนเนอร์ซึ่งฉันต้องการคงอยู่ก่อนที่จะออกแบบการตั้งค่าใหม่

17
Docker Networking - nginx: ไม่พบโฮสต์ [Emerg] ในอัปสตรีม
ฉันเพิ่งเริ่มย้ายไปยังคุณสมบัติระบบเครือข่ายของ Docker 1.9 และ Docker-Compose 1.5 เพื่อแทนที่โดยใช้ลิงก์ จนถึงตอนนี้การเชื่อมโยงไม่มีปัญหากับ nginx ที่เชื่อมต่อกับเซิร์ฟเวอร์ fastcgi php5-fpm ของฉันที่อยู่ในเซิร์ฟเวอร์อื่นในกลุ่มเดียวผ่านทางนักเทียบท่า ใหม่แม้ว่าเมื่อฉันรันdocker-compose --x-networking upphp-fpm คอนเทนเนอร์ mongo และ nginx จะบูตขึ้นมา แต่ nginx จะออกทันทีด้วย[emerg] 1#1: host not found in upstream "waapi_php_1" in /etc/nginx/conf.d/default.conf:16 อย่างไรก็ตามหากฉันเรียกใช้คำสั่ง docker-compose อีกครั้งในขณะที่ php และ mongo container กำลังทำงานอยู่ (nginx ออก) nginx จะเริ่มทำงานและทำงานได้ดีนับจากนั้นเป็นต้นไป นี่คือdocker-compose.ymlไฟล์ของฉัน: nginx: image: nginx ports: …

2
เริ่มเขียนนักเทียบท่า“ ข้อผิดพลาด: ไม่มีคอนเทนเนอร์ให้เริ่ม”
ฉันกำลังพยายามใช้ Docker Compose (กับ Docker Machine บน Windows) เพื่อเปิดใช้งานกลุ่มคอนเทนเนอร์ Docker docker-compose.yml ของฉัน: version: '2' services: postgres: build: ./postgres environment: - POSTGRES_PASSWORD=mysecretpassword frontend: build: ./frontend ports: - "4567:4567" depends_on: - postgres backend: build: ./backend ports: - "5000:5000" depends_on: - postgres docker-compose buildทำงานได้สำเร็จ เมื่อฉันเรียกใช้docker-compose startฉันจะได้รับผลลัพธ์ต่อไปนี้: Starting postgres ... done Starting frontend ... …

7
ปิดใช้งานแคชสำหรับคำสั่ง RUN เฉพาะ
ฉันมีRUNคำสั่งบางอย่างใน Dockerfile ที่ฉันต้องการเรียกใช้-no-cacheทุกครั้งที่สร้างอิมเมจ Docker ฉันเข้าใจว่าdocker build --no-cacheจะปิดใช้งานการแคชสำหรับ Dockerfile ทั้งหมด เป็นไปได้หรือไม่ที่จะปิดการใช้งานแคชสำหรับคำสั่ง RUN เฉพาะ?
98 docker 

3
นักเทียบท่าจะรันข้อกำหนด pip.txt เฉพาะเมื่อมีการเปลี่ยนแปลงหรือไม่
ใน Dockerfile ฉันมีเลเยอร์ที่ติดตั้งrequirements.txt: FROM python:2.7 RUN pip install -r requirements.txt เมื่อฉันสร้างอิมเมจนักเทียบท่ามันจะเรียกใช้กระบวนการทั้งหมดโดยไม่คำนึงถึงการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นกับไฟล์นี้ ฉันจะแน่ใจได้อย่างไรว่า Docker ทำงานเฉพาะpip install -r requirements.txtเมื่อมีการเปลี่ยนแปลงไฟล์เท่านั้น Removing intermediate container f98c845d0f05 Step 3 : RUN pip install -r requirements.txt ---> Running in 8ceb63abaef6 Collecting https://github.com/tomchristie/django-rest-framework/archive/master.zip (from -r requirements.txt (line 30)) Downloading https://github.com/tomchristie/django-rest-framework/archive/master.zip Collecting Django==1.8.7 (from -r requirements.txt (line …

5
ฉันจะสร้างอิมเมจพื้นฐานของตัวเองสำหรับ Docker ได้อย่างไร
ตามเอกสารของ Dockerในการสร้างอิมเมจของคุณเองคุณต้องระบุอิมเมจพื้นฐานโดยใช้FROMคำสั่งเสมอ เห็นได้ชัดว่ามีภาพมากมายให้เลือกในดัชนี Dockerแต่ถ้าฉันต้องการสร้างของตัวเองล่ะ? เป็นไปได้หรือไม่ อิมเมจbaseถูกสร้างขึ้นจาก Ubuntu ถ้าฉันเข้าใจถูกต้องและฉันต้องการทดลองกับรูปภาพ Debian นอกจากนี้ฉันต้องการเข้าใจวิธีการทำงานของ Docker อย่างแท้จริงและbaseภาพยังคงเป็นกล่องดำสำหรับฉัน แก้ไข: เอกสารอย่างเป็นทางการเกี่ยวกับการสร้างภาพฐาน
97 docker 

3
อ็อพชัน --net = host ในคำสั่ง Docker ทำอะไรได้บ้าง?
ฉันเพิ่งเริ่มใช้ Docker นิดหน่อย ฉันไม่พบคำอธิบายที่ชัดเจนว่าตัวเลือกนี้ทำอะไรในคำสั่ง docker run ในเชิงลึกและสับสนเล็กน้อย เราสามารถใช้มันเพื่อเข้าถึงแอพพลิเคชั่นที่ทำงานบน Docker container โดยไม่ระบุพอร์ตได้หรือไม่? ตัวอย่างเช่นหากฉันเรียกใช้ webapp ที่ปรับใช้ผ่านอิมเมจนักเทียบท่าในพอร์ต 8080 โดยใช้ตัวเลือก-p 8080:8080ในคำสั่ง docker run ฉันรู้ว่าฉันจะต้องเข้าถึงบนพอร์ต 8080 บนคอนเทนเนอร์ Docker ip / theWebAppName แต่ฉันคิดไม่ออกจริงๆว่า--net=hostตัวเลือกทำงานอย่างไร

7
วิธีรับที่อยู่ IP ของการเรียกใช้ Docker container
ฉันใช้ Docker สำหรับ Mac ฉันกำลังเรียกใช้ microservice ที่ใช้ nodejs ในคอนเทนเนอร์ Docker ฉันต้องการทดสอบโหนดไมโครเซอร์วิสผ่านเบราว์เซอร์ วิธีรับที่อยู่ IP ของการเรียกใช้ Docker container?

3
Docker และ --userns-remap วิธีจัดการสิทธิ์ระดับเสียงเพื่อแชร์ข้อมูลระหว่างโฮสต์และคอนเทนเนอร์
ในนักเทียบท่าไฟล์ที่สร้างขึ้นภายในคอนเทนเนอร์มักจะมีความเป็นเจ้าของที่ไม่สามารถคาดเดาได้ในขณะที่ตรวจสอบไฟล์เหล่านั้นจากโฮสต์ เจ้าของไฟล์บนไดรฟ์ข้อมูลคือ root (uid 0) โดยค่าเริ่มต้น แต่ทันทีที่บัญชีผู้ใช้ที่ไม่ใช่รูทเกี่ยวข้องกับคอนเทนเนอร์และเขียนไปยังระบบไฟล์เจ้าของจะสุ่มจากมุมมองของโฮสต์มากขึ้นหรือน้อยลง เป็นปัญหาเมื่อคุณต้องการเข้าถึงข้อมูลปริมาณจากโฮสต์โดยใช้บัญชีผู้ใช้เดียวกันซึ่งเรียกใช้คำสั่งนักเทียบท่า วิธีแก้ปัญหาทั่วไปคือ บังคับให้ผู้ใช้ uIDs ในเวลาสร้างใน Dockerfiles (ไม่ใช่แบบพกพา) ส่งผ่าน UID ของผู้ใช้โฮสต์ไปยังdocker runคำสั่งเป็นตัวแปรสภาพแวดล้อมจากนั้นรันchownคำสั่งบางคำบนไดรฟ์ข้อมูลในสคริปต์จุดเริ่มต้น โซลูชันทั้งสองนี้สามารถควบคุมสิทธิ์จริงภายนอกคอนเทนเนอร์ได้ ฉันคาดว่าเนมสเปซของผู้ใช้จะเป็นทางออกสุดท้ายสำหรับปัญหานี้ ฉันได้ทำการทดสอบกับเวอร์ชัน 1.10 ที่เพิ่งเปิดตัวและ - ผู้ใช้ - ทำการรีแมปไปยังบัญชีเดสก์ท็อปของฉัน อย่างไรก็ตามฉันไม่แน่ใจว่ามันสามารถทำให้การเป็นเจ้าของไฟล์บนไดรฟ์ข้อมูลที่เมาท์จัดการง่ายขึ้นฉันกลัวว่ามันอาจจะตรงกันข้าม สมมติว่าฉันเริ่มคอนเทนเนอร์พื้นฐานนี้ docker run -ti -v /data debian:jessie /bin/bash echo 'hello' > /data/test.txt exit จากนั้นตรวจสอบเนื้อหาจากโฮสต์: ls -lh /var/lib/docker/100000.100000/volumes/<some-id>/_data/ -rw-r--r-- 1 100000 100000 6 …
96 docker 

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