Dockerfile 在Ubuntu20.04构建镜像,ERROR: failed to solve: process “...“ did not complete successfully..

完整报错:ERROR: failed to solve: process "/bin/bash -c apt-get update && apt-get upgrade -y && apt-get install -y net-tools iputils-ping dnsutils libssl-dev ros-${ROS_DISTRO}-desktop ros-${ROS_DISTRO}-rmw-cyclonedds-cpp --no-install-recommends && rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 100。

重复build了好几次,都是报这个错误,考虑镜像源问题,估计是apt-get这个命令的问题。

修改方式:在dockerfile文件中,考虑在运行apt-get命令之前,插入以下命令:

RUN sed -i 's@http://archive.ubuntu.com/@http://mirrors.tuna.tsinghua.edu.cn/@g' /etc/apt/sources.list \
    && sed -i 's@http://security.ubuntu.com/@http://mirrors.tuna.tsinghua.edu.cn/@g' /etc/apt/sources.list
    && sed -i 's#http://ports.ubuntu.com/ubuntu-ports/#http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/#g' /etc/apt/sources.list

此外还遇到了另外一种情况 :

就是上面的修改完毕后,清除缓存再运行,发现换源这里的执行时间为0.0s。

感觉镜像源可能没有写入/etc/apt/sources.list,于是我在dockerfile里面增加了这一行:

RUN cat /etc/apt/sources.list

然后运行dockerbuild,加上--progress=plain为了输出更细致一点

 docker build --rm --progress=plain --no-cache -f $BUILD_CONTEXTS -t $DOCKERHUB_USERNAME/ros:rolling-$ARCH .

之后,输出如下 :

 从输出中可以看到 /etc/apt/sources.list 文件的内容,其中提到了 Ubuntu sources 已经移动到了 /etc/apt/sources.list.d/ubuntu.sources 文件。

修改方式2:就是把后面的文件地址改了

RUN sed -i 's@http://archive.ubuntu.com/@http://mirrors.tuna.tsinghua.edu.cn/@g' /etc/apt/sources.list.d/ubuntu.sources \
    && sed -i 's@http://security.ubuntu.com/@http://mirrors.tuna.tsinghua.edu.cn/@g' /etc/apt/sources.list.d/ubuntu.sources\
    && sed -i 's#http://ports.ubuntu.com/ubuntu-ports/#http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/#g' /etc/apt/sources.list.d/ubuntu.sources

(不管上面什么情况)最后运行过程如下:

1. 清除缓存

docker builder prune

2. 运行docker build即可(博主自己构建了一个循环build的脚本文件,其实大差不差)

最后结果如下:镜像构建成功! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值