Docker'daki varsayılan WORKDIR nedir?


87

WORKDIRBir dizini içinde çalışma dizini olarak ayarlamak için kullanabiliriz Dockerfile, ancak ayarlamazsak varsayılan değer nedir?


2
Sadece tek satırlık bir Dockerfile çalıştırınRUN pwd
kilgoretrout

Yanıtlar:



32

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 .


13

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


6

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 .


Cevabınız sadece konu dışı değil, tamamen yanlış. İlk olarak, soru şudur: Dockerfile'da açıkça belirtilmemişse, bir IMAGE'nin varsayılan WORKDIR'ı nedir? Cevabınız, yeni bir CONTAINER'ın varsayılan çalışma dizininin /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.
lmat
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.