อัปเดต
วิธีที่ง่ายที่สุด: การใช้นักเทียบท่า exec
รุ่นหาง 1.3 หรือใหม่กว่าสนับสนุนคำสั่งว่าจะประพฤติที่คล้ายกันexec
nsenter
คำสั่งนี้สามารถเรียกใช้กระบวนการใหม่ในคอนเทนเนอร์ที่กำลังทำงานอยู่แล้ว (คอนเทนเนอร์ต้องมีกระบวนการ PID 1 ทำงานอยู่แล้ว) คุณสามารถเรียกใช้/bin/bash
เพื่อสำรวจสถานะคอนเทนเนอร์:
docker exec -t -i mycontainer /bin/bash
ดูเอกสารคู่มือบรรทัดคำสั่งของนักเทียบท่า
วิธีอื่น 1 การจับ
ภาพ
คุณสามารถประเมินระบบไฟล์คอนเทนเนอร์ด้วยวิธีนี้:
# find ID of your running container:
docker ps
# create image (snapshot) from container filesystem
docker commit 12345678904b5 mysnapshot
# explore this filesystem using bash (for example)
docker run -t -i mysnapshot /bin/bash
ด้วยวิธีนี้คุณสามารถประเมินระบบไฟล์ของคอนเทนเนอร์ที่ทำงานอยู่ในช่วงเวลาที่แม่นยำ คอนเทนเนอร์ยังคงทำงานอยู่ไม่มีการเปลี่ยนแปลงในอนาคต
คุณสามารถลบสแนปชอตในภายหลังได้ (ระบบไฟล์ของคอนเทนเนอร์ที่รันอยู่ไม่ได้รับผลกระทบ!):
docker rmi mysnapshot
วิธีอื่น 2
ssh
หากคุณต้องการเข้าถึงอย่างต่อเนื่องคุณสามารถติดตั้ง sshd ไปยังคอนเทนเนอร์ของคุณและรัน sshd daemon:
docker run -d -p 22 mysnapshot /usr/sbin/sshd -D
# you need to find out which port to connect:
docker ps
ด้วยวิธีนี้คุณสามารถเรียกใช้แอปของคุณโดยใช้ ssh (เชื่อมต่อและรันสิ่งที่คุณต้องการ)
UPDATE: วิธีการสำรอง 3
nsenter
ใช้nsenter
ดูhttps://web.archive.org/web/20160305150559/http://blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker/
เวอร์ชันย่อคือ: ด้วย nsenter คุณสามารถรับเชลล์ลงในคอนเทนเนอร์ที่มีอยู่แม้ว่าคอนเทนเนอร์นั้นจะไม่รัน SSH หรือ daemon วัตถุประสงค์พิเศษชนิดใด ๆ
docker exec <container> bash
. ดังนั้นคุณเพียงแค่เปิดเปลือกภายในภาชนะ