Mengapa saya tidak dapat cd ke direktori dengan docker run?

Saya perlu menjalankan aplikasi dari direktori tertentu.

$ 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

Direktori itu pasti ada, dan jika saya terhubung ke docker dengan menjalankan bash secara interaktif, saya dapat menjalankan perintah di atas.

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

Saya dapat menjalankan program saya dengan menentukan jalur lengkap, tetapi kemudian macet karena diharapkan akan diluncurkan dari direktori saat ini. Apa yang bisa saya lakukan?

Anda dapat menggunakan -w pilihan untuk mengubah direktori kerja Anda.

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

Jadi, dalam kasus Anda, Anda akan menjalankan:

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

Berikan perintah Anda sebagai argumen ke / bin / sh seperti ini:

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

Gunakan WORKDIR di Dockerfile Anda untuk mengatur direktori kerja. Kemudian Anda dapat menjalankan perintah Anda dengan EXEC.

Ini mungkin saya karena masalah izin atau instance tidak dapat menemukan jalur yang tersedia yang dapat dieksekusi. Untuk memeriksa ini, coba tambahkan lokasi yang tersedia yang dapat dieksekusi di jalur dan coba jalankan skrip

untuk menambahkan direktori saat ini di path silakan gunakan perintah di bawah ini

$ export PATH=$PATH:

Saya memiliki contoh serupa dari situs web ini https://djangostars.com/blog/what-is-docker-and-how-to-use-it-with-python/#header13:

docker run -d --name "test-nginx" -p 8080:80 -v $(pwd):/usr/share/nginx/html:ro nginx:latest

Perintah ini tidak bekerja pada Git Bash dan Windows.

Solusinya adalah dengan menggunakan cd alih-alih $(pwd):

docker run -d --name "test-nginx" -p 8080:80 -v cd:/usr/share/nginx/html:ro nginx:latest