Chúng ta có thể sử dụng WORKDIR
để đặt một thư mục làm thư mục công việc Dockerfile
, nhưng giá trị mặc định là gì nếu chúng ta không đặt?
Câu trả lời:
nói rằng nó là /
, vì vậy thư mục gốc
Mặc định thực sự /
như đã nêu ở những nơi khác. Tuy nhiên, điều đáng nói là bạn hầu như sẽ không bao giờ chạy từ một hình ảnh docker trống ( FROM scratch
), vì vậy, WORKDIR
khả năng là do hình ảnh cơ sở bạn đang sử dụng đặt.
Ví dụ: https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.template có WORKDIR $CATALINA_HOME
và https://github.com/dockerfile/ubuntu/blob/master/Dockerfile có WORKDIR /root
. ( https://hub.docker.com/r/base/archlinux/~/dockerfile/WORKDIR
tuy nhiên không sử dụng .)
Do đó, tốt nhất là đặt riêng của bạn một WORKDIR
cách rõ ràng.
Thư mục làm việc mặc định để chạy các tệp nhị phân trong một vùng chứa là thư mục gốc ( /
), nhưng nhà phát triển có thể đặt một thư mục khác bằng lệnh Dockerfile WORKDIR. Nhà điều hành có thể ghi đè điều này bằng:
-w="": Working directory inside the container
Tại đây: https://docs.docker.com/engine/reference/run/#workdir
Vì không có người dùng nào ngoài root trong một docker mới sinh hoặc một container. Vì vậy, đối với mỗi thay đổi sẽ có một cam kết cho vùng chứa đó như anh chàng này đã nói. Do đó, pwd của điều đó hoặc như bạn đã hỏi WORKDIR được /
root theo mặc định và mỗi khi bạn thực hiện một lệnh /bin/bash
như thế này:
$docker exec -i -t 53f784fwer54 /bin/bash
trên một container đang chạy, nó sẽ đưa bạn vào đây /
trong thư mục gốc.
/
là không chính xác và không liên quan. Workdir mặc định của một vùng chứa mới giống với workdir mặc định của hình ảnh. Ví dụ, tôi vừa chạy docker exec -ti <my_app> /bin/bash;
sau đó trong quy trình bash mới pwd
, và tôi thấy rằng thư mục đang hoạt động /app
.
RUN pwd