2015-08-21 84 views
0

我正在嘗試將容器中的捲動態安裝到主機上,並且它可以正常工作,但存在問題。我使用下面的命令:Docker卷安裝問題

docker run -it --name Test1 -v $HOME/.myapp_configs/specificConfig.txt:/bin/specificConfig.txt:rw docker-image /bin/bash 

的問題在於,如果在主機上安裝點不存在泊塢窗命令創建它,而是將它root:root,而不是像$USER:$USER我期望的那樣。我認爲這很可能是Docker確定的命名空間映射問題的直接結果。

有沒有人有任何想法,我可以如何強制使用適當的權限創建主機安裝點?即

drwxr-xr-x. 3 $USER $USER 31 Aug 21 15:02 ~/.myapp_configs/specificConfig.txt 

的,而不是...

drwxr-xr-x. 3 root root 31 Aug 21 15:02 ~/.myapp_configs/specificConfig.txt 

感謝,

布魯斯

回答

1

關於確保運行容器之前該文件存在麼?

命令可能看起來像:

test -f $HOME/.myapp_configs/specificConfig.txt || touch $HOME/.myapp_configs/specificConfig.txt 
docker run -it --name Test1 -v $HOME/.myapp_configs/specificConfig.txt:/bin/specificConfig.txt:rw docker-image /bin/bash 

解釋:如果文件存在

  • ||將執行以下命令

    • test -f <some file>將退出狀態0只有當先前的命令退出狀態不同於0
    • touch <some file>修改現有文件的修改時間,或(這是我們的情況下)創建一個空文件

    當然,如果你的容器,裏面放着一些代碼,作用不同的文件是否存在或者沒有,那麼你將不得不調整該代碼來檢查文件是否爲空

  • +0

    我曾考慮過那一個。唯一的問題是我正在使用docker-compose文件編排多個容器的啓動。據我所知,沒有辦法從撰寫文件在主機上執行命令。我可能不得不求助於編寫一個安裝腳本,該腳本必須在最終用戶試圖在容器內執行代碼之前執行。雖然你的回答並不完全符合我的需求,但對於正常情況來說,這是一個很好的答案。我想我只是異常。 :-) – CompSciGuy139

    +0

    經過進一步研究,目前這是唯一的解決方案。謝謝你的幫助。 – CompSciGuy139