Neden liman işçisi çalıştırılan bir dizine cd alamıyorum?


39

Bir uygulamayı belirli bir dizinden çalıştırmam gerekiyor.

$ 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

Bu dizin kesinlikle var ve bash'ı etkileşimli olarak çalıştırarak docker'a bağlanırsam yukarıdaki komutu çalıştırabilirim.

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

Tam yolunu belirterek programımı çalıştırabilirim, ancak geçerli dizinden başlatılmasını beklediği için kilitleniyor. Ne yapabilirim?

Yanıtlar:


34

Komutunuzu aşağıdaki gibi / bin / sh argümanı olarak iletin:

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

liman işçisi centos / bin / sh -c 'cd / bin; / bin / ls 'hiçbir şey yazdırmıyor, liman çalışanı centos / bin / sh -c' / bin / ls / bin 'çalışıyor.
seanmcl

Aslında her iki komut da / bin dizinindeki dosyaların listesini çıkarır. İkisini de denedim.
Glueon

Kutuma değil, centos7.
seanmcl

1
Aslında, benim komutumun etrafındaki alıntıları silmek bile işe yaramadı. Bence liman işçisi /bin/sh -cyine de sarar .
schmmd

85

-wÇalışma dizini değiştirmek için seçeneğini kullanabilirsiniz .

docker run

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

Yani senin durumunda, koşarsın:

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

Ben kullanabilir misiniz -wile docker exec? Python betiğini benim konteynerimde çalıştırmanın bir yolunu arıyorum, ancak bunu konteynerin dışında durduramıyorum.
zx1986

oh, cevabı aldım ....flag provided but not defined: -w
zx1986

1
Kahretsin neden bu docker'ın referans sayfasının en altında saklanıyor ? :-)
Amir Abiri

5
Bu kabul edilen cevap olmalıdır
fferri

4

Çalışma dizini ayarlamak için Dockerfile içinde WORKDIR kullanın. Ardından komutunuzu EXEC ile çalıştırabilirsiniz.


0

Bu izin sorunu nedeniyle olabilir veya örnek çalıştırılabilir kullanılabilir yolu bulamıyor olabilir. Bunu kontrol etmek için çalıştırılabilir konumu yola eklemeye çalışın ve komut dosyasını çalıştırmayı deneyin

geçerli dizini yola eklemek için aşağıdaki komutu kullanın

$ export PATH=$PATH:
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.