完整报错: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. 扫除缓存
2. 运行docker build即可(博主自己构建了一个循环build的脚本文件,其实大差不差)
最后结果如下:镜像构建成功!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |