เหตุใดฉันจึงไม่สามารถซีดีไปยังไดเรกทอรีที่นักเทียบเรือทำงานได้


39

ฉันต้องการเรียกใช้แอปพลิเคชันจากไดเรกทอรีที่ระบุ

$ sudo docker run -P ubuntu/decomposer 'cd /local/deploy/decomposer; ./decomposer-4-15-2014'
2014/10/09 21:30:03 exec: "cd /local/deploy/decomposer; ./decomposer-4-15-2014": stat cd /local/deploy/decomposer; ./decomposer-4-15-2014: no such file or directory

ไดเรกทอรีนั้นมีอยู่จริงและถ้าฉันเชื่อมต่อกับนักเทียบท่าโดยใช้ bash แบบโต้ตอบฉันสามารถเรียกใช้คำสั่งด้านบนได้

$ sudo docker run -i -t ubuntu/decomposer /bin/bash
# cd /local/deploy/decomposer; ./decomposer-4-15-2014

ฉันสามารถเรียกใช้โปรแกรมของฉันโดยการระบุเส้นทางแบบเต็ม แต่ก็ล้มเหลวตามที่คาดว่าจะเปิดตัวจากไดเรกทอรีปัจจุบัน ฉันจะทำอย่างไร

คำตอบ:


34

ส่งคำสั่งของคุณเป็นอาร์กิวเมนต์ไปที่ / bin / sh ดังนี้:

sudo docker run -P ubuntu/decomposer /bin/sh -c 'cd /local/deploy/decomposer; ./decomposer-4-15-2014'

นักเทียบท่าวิ่ง centos / bin / sh -c 'cd / bin; / bin / ls 'ไม่ต้องพิมพ์อะไรในขณะที่นักเทียบท่ารัน centos / bin / sh -c' / bin / ls / bin '
seanmcl

จริง ๆ แล้วทั้งสองคำสั่งแสดงรายการของไฟล์ในไดเรกทอรี bin พยายามทั้งสอง
Glueon

ไม่ได้อยู่ในกล่องของฉัน centos7
seanmcl

1
ที่จริงแล้วแม้แต่ลบเครื่องหมายคำพูดรอบคำสั่งของฉันเพื่อให้ทำงานได้ดี ฉันคิดว่านักเทียบท่าล้อมมันไว้/bin/sh -cแล้ว
schmmd

85

คุณสามารถใช้-wตัวเลือกเพื่อเปลี่ยนไดเรกทอรีการทำงานของคุณ

docker run

  -w, --workdir=""           Working directory inside the container

ดังนั้นในกรณีของคุณคุณจะเรียกใช้:

sudo docker run -w /local/deploy/decomposer -P ubuntu/decomposer ./decomposer-4-15-2014

ฉันสามารถใช้-wกับdocker exec? ฉันกำลังมองหาวิธีที่จะเรียกใช้สคริปต์หลามในภาชนะของฉัน แต่ไม่สามารถหยุดมันได้นอกภาชนะ
zx1986

โอ้ฉันได้รับคำตอบ ....flag provided but not defined: -w
zx1986

1
เหตุผลนี้ทำให้สิ่งนี้ซ่อนอยู่ตลอดเวลาที่ด้านล่างของหน้าอ้างอิงการทำงานของนักเทียบท่า ! :-)
อาเมียร์ Abiri

5
นี่ควรเป็นคำตอบที่ได้รับการยอมรับ
fferri

4

ใช้ WORKDIR ใน Dockerfile ของคุณเพื่อตั้งค่าไดเรกทอรีทำงาน จากนั้นคุณสามารถเรียกใช้คำสั่งของคุณด้วย EXEC


0

นี่อาจเป็นเพราะปัญหาสิทธิ์หรืออินสแตนซ์ไม่สามารถค้นหาพา ธ ที่ปฏิบัติการได้ เพื่อตรวจสอบนี้ลองเพิ่มสถานที่ปฏิบัติการที่มีอยู่ในเส้นทางและลองเรียกใช้สคริปต์

เพื่อเพิ่มไดเรกทอรีปัจจุบันในเส้นทางกรุณาใช้คำสั่งด้านล่าง

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