docker 常见报错

docker常见报错

OCI runtime exec failed: exec failed 容器报错

镜像是使用alpine制作的

docker exec -it 容器名/容器ID bash
//把bash改成 /bin/sh
docker exec -it 容器名/容器ID /bin/sh

Removal In Progress

容器无法删除,状态是Removal In Progress

systemctl stop docker 

//获取容器挂载目录,一般是 /var/lib/docker
docker info | grep "Docker Root Dir"

//进入/var/lib/docker/containers,删除以这个容器ID开头的文件夹,然后重启docker
rm -rf ea354b1657baf838e3ab565264b3570d053c410e0f3f5c7fd7ef509444702cf9
systemctl start docker

Device or resource busy

我这里的报错是docker run的时候,脚本对一个-v挂载的文件sed替换报错,这是因为-v挂载的文件,在docker内的程序在未启动前文件是不可写的,但是这个文件是可以拷贝的,因此我拷贝了一份,sed的时候使用拷贝的这份配置文件

EXPORTERCONF="monitordata/application.conf"
EXPORTERCONFTMP="monitordata/application.conf.bak"

//sed替换拷贝后的文件
CHANGEVALUE() {
    local filename=$1
    local key=$2
    local newvalue=$3

    if [ $key ];then
        cp ${filename} ${filename}.bak
        sed -i "s/${key}=.*/${key}=${newvalue}/g"  ${EXPORTERCONFTMP}
    else 
        echo "no value" >> /dev/null
    fi
}


//获取环境变量中的value
GETVALUEFROMENV() {
    local envname=$1
    env  | grep -w ${envname} | awk -F= '{print $2}'
}

//传入key,value替换配置文件内容
INITCONFIGFILE()  {
    CHANGEVALUE ${EXPORTERCONF} ISREDIS  ${ISREDISTMP}
}
posted @ 2022-07-15 10:25  liwenchao1995  阅读(286)  评论(0编辑  收藏  举报