菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
277
0

创建或修改 docker 容器内部文件

原创
05/13 14:22
阅读数 787178

容器内部没有图形化的编辑工具,只有 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
}
 

 

发表评论

0/200
277 点赞
0 评论
收藏