zoukankan      html  css  js  c++  java
  • 如何nsenter,docker-enter给已经启动的docker容器挂载文件?

    脚本如下:

    #!/bin/bash
    set -ex
    
    useage(){
        echo "useage:"
        echo "  dockermnt.sh CONTAINER HOSTPATH CONTPATH"
    }
    
    if [ $# -ne 3 ];then
        useage
        exit
    fi
    
    CONTAINER=$1
    HOSTPATH=$2
    CONTPATH=$3
    
    REALPATH=$(readlink --canonicalize "$HOSTPATH")
    FILESYS=$(df -P "$REALPATH" | tail -n 1 | awk '{print $6}')
    
    while read -r DEV MOUNT JUNK
    do [ "$MOUNT" = "$FILESYS" ] && break
    done </proc/mounts
    [ "$MOUNT" = "$FILESYS" ] # Sanity check!
    
    while read -r A B C SUBROOT MOUNT JUNK
    do [ "$MOUNT" = "$FILESYS" ] && break
    done < /proc/self/mountinfo 
    [ "$MOUNT" = "$FILESYS" ] # Moar sanity check!
    
    SUBPATH=$(echo "$REALPATH" | sed s,^$FILESYS,,)
    DEVDEC=$(printf "%d %d" $(stat --format "0x%t 0x%T" $DEV))
    
    docker-enter "$CONTAINER" sh -c 
    	     "[ -b $DEV ] || mknod --mode 0600 $DEV b $DEVDEC"
    docker-enter "$CONTAINER" mkdir /tmpmnt
    docker-enter "$CONTAINER" mount "$DEV" /tmpmnt
    docker-enter "$CONTAINER" mkdir -p "$CONTPATH"
    docker-enter "$CONTAINER" mount -o bind "/tmpmnt/$SUBROOT/$SUBPATH" "$CONTPATH"
    docker-enter "$CONTAINER" umount /tmpmnt
    docker-enter "$CONTAINER" rmdir /tmpmnt
    

    使用方法:

    dockermnt.sh CONTAINER HOSTPATH CONTPATH
    
  • 相关阅读:
    AOC的服务还不错
    浅谈Java、MySQL的中文排序问题
    祝cnBlogs的Blogger们新年快乐!
    GT 3.9.4以及今天的工作
    堆排序
    桶排序
    常用排序算法稳定性分析
    VS2010远程调试环境配置详解
    基数排序
    如何修改数据库的服务器名称
  • 原文地址:https://www.cnblogs.com/futuretea/p/11996167.html
Copyright © 2011-2022 走看看