Docker Symbolic Linked Volumes
在 docker 裡出現 symbolic links 要注意喔!
Introduction
最近工作上用 Docker 來建立自己的 TensorFlow 開發環境, 因為 TensorFlow 的 Docker Images 其實是使用 root , 而且想要再上面再裝一些自己的 Packages ,所以會寫一個 Dockerfile , 基於 **TensorFlow 的 Docker Images ** 。
其實這邊會先有一個問題,因為不想用 root ,所以在 Dockerfile 裡面會 新增一個一般 user ,但是這個 user 的 uid 預設會是 1000 , 可能跟外面的 uid 不同,怎麼解決這個另外再說。
這篇要講的是 Docker Volumes 的部份,首先就是想要把外面的 Source code
或是其他的目錄,放進 Docker Container 裡面,為了不要一直 docker cp
,
其實是可以善加利用 Docker Volumes ,像是如下的設定,
1 | $DOCKER start $CONTAINER_NAME > /dev/null 2> /dev/null || { |
通常這樣是很 OK 的,在這層目錄的 volumes 就會對應到 Docker Container 裡面的 /home/user/volumes ,外面改裡面也看得到,反之亦然。
不過要是 volumes 裡面包含有 symbolic link 的目錄,就會出錯了, 因為 Docker Container 裡面通常不會有一樣指過去的路徑。
所以就寫了一個,可以自己尋找 volumes 底下 symbolic link 的目錄, 再用多個 –volume 串起來的功能。
1 | function get_volumes_opt() { |