我已經開始碼頭集裝箱並修改了一個文件。稍後我想從碼頭主持人那裏檢查這個變化。現在我用docker cp
導出文件,檢查它,刪除它。但是,如果我只是想讀取一個文件,這個多步驟複製讀取 - 刪除過程看起來就像殺了人。檢查碼頭集裝箱FS從主機變化
是否有更好的方法檢查碼頭集裝箱中的文件系統更改?
我需要比docker diff
更多的信息顯示。
我已經開始碼頭集裝箱並修改了一個文件。稍後我想從碼頭主持人那裏檢查這個變化。現在我用docker cp
導出文件,檢查它,刪除它。但是,如果我只是想讀取一個文件,這個多步驟複製讀取 - 刪除過程看起來就像殺了人。檢查碼頭集裝箱FS從主機變化
是否有更好的方法檢查碼頭集裝箱中的文件系統更改?
我需要比docker diff
更多的信息顯示。
您可以找到正在運行的容器的文件系統Docker數據目錄,通常爲/var/lib/docker/
。具體位置取決於使用哪個storage driver。對於AUFS,位置是`/ var/lib/docker/aufs/mnt/$ {CONTAINER_ID} /。
$ HELLO_WORLD=$(docker run -d ubuntu:12.04 /bin/sh -c "while true; do echo Hello world; sleep 1; done")
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2524e196adf0 ubuntu:12.04 /bin/sh -c while tru 4 seconds ago Up 3 seconds naughty_brown
$ echo $HELLO_WORLD
2524e196adf0b985e84a22503d5fd1f2110c6a0cf175f12496f11f0043e799fa
$ sudo ls /var/lib/docker/aufs/mnt/${HELLO_WORLD}/
bin boot dev etc home lib lib64 media mnt opt proc root run sbin selinux srv sys tmp usr var
這不是一個通用的解決方案,但在特殊情況下,你可以使用已安裝的卷:
,體積啓動容器:
sudo docker run -v /host_path/shared:/shared <container>
存儲文件要在集裝箱檢查dir /shared
或將& ln文件複製到/shared
,並將所需文件的符號鏈接存儲在/shared
中。
cp /mydir/myfile /shared/myfile
ln -s -f /shared/myfile /mydir/myfile
然後你就可以直接在/host_path/shared
檢查這些文件。
注:不能符號鏈接特殊文件如/etc/passwd
,/etc/hostname
等