創建或修改 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 }

#根據文件所在路徑創建目錄
function mkfdir(){
    local dir=`dirname $1`
    [ -d "$dir" ] || mkdir $dir
}
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM