WORKDIR
Bir dizini içinde çalışma dizini olarak ayarlamak için kullanabiliriz Dockerfile
, ancak ayarlamazsak varsayılan değer nedir?
WORKDIR
Bir 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 WORKDIR
muhtemelen 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_HOME
ve 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 WORKDIR
açı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 pwd
ve çalışma dizininin olduğunu görüyorum /app
.
RUN pwd