1. 程式人生 > 實用技巧 >建立或修改 docker 容器內部檔案

建立或修改 docker 容器內部檔案

容器內部沒有圖形化的編輯工具,只有 docker cp 命令將檔案複製出來,修改,再複製回去,總之,太麻煩了。

看我的實現效果:

把本地路徑省了,自動複製到 /tmp/container-name/ 目錄中,然後自動開啟檔案。上傳的時候,同樣也是到這個目錄去找檔案,然後複製回去。

由於每次 open 命令都是重新複製檔案出來,所以,也可以驗證 push 是否生效。

#開啟檔案或目錄
#可以開啟 docker 容器中的檔案,如: open container:/home/test.txt  注:引數要冒號開頭
#會把容器中的檔案複製到 /tmp/<container>/ 目錄中,如果複製為成功,則在該目錄新建。
#可以再結合一個 push container:
/home/test.txt 就會找到 /tmp/<container>/test.txt 並複製到容器中 #如果沒有引數,表示開啟當前目錄 #由於我是用的 WSL 開啟當前目錄的命令 explorer.exe . 請換成 xdg-open 命令
#由於我的編輯器是 vscode 所以 開啟檔案的命令是 code filename 換成你自己的,比如:gedit
function open(){ option="$1"
case "$1" in*:*)
set
-- "${1%:*}" "${1#*:}" local
file="/tmp/$1/`basename $2`" mkfdir $file docker cp $1:$2 $file 2>/dev/null open $file ;; '') explorer.exe .;; #xdg-open $PWD;; *) mime=`file --mime-type $option | awk '{print $2}'` #如果是符號連結
if [ $mime == 'inode/symlink' ];then option=`readlink -e $option` mime=`file --mime-type $option | awk '{print $2}'` fi if [ -n "`echo $mime | grep -E '^(text/|inode/x-empty|application/json)'`" ];then #用編輯器開啟 code $option elif [ "$mime" = 'inode/directory' ];then cd $option && explorer.exe . #xdg-open $option elif [ "$mime" != 'cannot' ];then #預設方式開啟 color red "檔案型別:$mime" explorer.exe $option #xdg-open $option else color red "新建: $option" [ ! -w . ] && sudo touch $option code $option fi ;; esac } #可以推送 git #可以結合上面 open 可以再把檔案推送到容器 function push(){ case "$1" in *:*) set -- "${1%:*}" "${1#*:}"; docker cp /tmp/$1/`basename $2` $1:$2;; '') git push;; *) git add $@; git commit -m '日常更新'; git push;; esac }

#根據檔案所在路徑建立目錄
functionmkfdir(){ localdir=`dirname$1` [-d"$dir"]||mkdir$dir }