WORKDIRBir dizini içinde çalışma dizini olarak ayarlamak için kullanabiliriz Dockerfile, ancak ayarlamazsak varsayılan değer nedir?
WORKDIRBir dizini içinde çalışma dizini olarak ayarlamak için kullanabiliriz Dockerfile, ancak ayarlamazsak varsayılan değer nedir?
Yanıtlar:
öyle diyor /, bu yüzden kök dizin
Varsayılan, aslında /başka bir yerde belirtildiği gibidir. Yine de, neredeyse hiçbir zaman boş bir docker görüntüsünden ( FROM scratch) çalıştırılmayacağınızdan bahsetmeye değer , bu nedenle WORKDIRmuhtemelen kullandığınız temel görüntü tarafından belirlenir.
Örneğin, https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.template sahiptir WORKDIR $CATALINA_HOMEve https://github.com/dockerfile/ubuntu/blob/master/Dockerfile sahiptir WORKDIR /root. ( https://hub.docker.com/r/base/archlinux/~/dockerfile/WORKDIR bununla birlikte kullanmaz .)
Bu nedenle, en iyisi, kendinizinkini WORKDIRaçıkça ayarlamaktır .
Bir kap içinde ikili dosyaları çalıştırmak için varsayılan çalışma dizini kök dizindir ( /), ancak geliştirici Dockerfile WORKDIR komutuyla farklı bir dizin ayarlayabilir. Operatör bunu şu şekilde geçersiz kılabilir:
-w="": Working directory inside the container
Burada: https://docs.docker.com/engine/reference/run/#workdir
Yeni doğmuş bir kapıda veya bir konteynerde kesinlikle bir kökten başka kullanıcı olmadığı için. Yani, bu adamın dediği gibi, her değişiklik için o konteynır için bir taahhüt olacak . Bu nedenle, bunun pwd'si veya sorduğunuz gibi WORKDIR / varsayılan olarak root'tur ve her böyle bir çalıştırdığınızda /bin/bash:
$docker exec -i -t 53f784fwer54 /bin/bash
çalışan bir kapta sizi buraya /kök dizine koyacaktır .
/yanlış ve alakasız olduğunu söylüyor . Yeni bir kabın varsayılan çalışma dizini, görüntünün varsayılan çalışma dizini ile aynıdır. Örneğin, docker exec -ti <my_app> /bin/bash;daha sonra yeni bash sürecinde koştum pwdve çalışma dizininin olduğunu görüyorum /app.
RUN pwd