Docker容器

docker容器内使用apt报错E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission d

本文主要是介绍docker容器内使用apt报错E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission d,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、问题背景

1、问题描述

  docker 中执行:apt-get update

  报错:E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied)

2、问题原因:权限不足,请使用 root 用户

3、解决方案:0 表示 root 用户

docker exec -it id /bin/bash
// 改为
docker exec -u 0 -it id /bin/bash

二、Dockerfile 具体原因及如何解决

  使用 Dockerfile 构建一个镜像,如果使用的 base image 设置了 USER 项,则之后的所有构建动作则切换到了 USER 指定的用户,且 docker run 该镜像后的用户也是USER 指定的用户。

  因此为了在 base image 上继续添加构建动作,则可以使用 USER root 切换到 root 用户执行构建,再在构建结束时使用 USER someone 切换为原用户。

FROM someimage
...
USER root
...
USER someone
...

  比如我在 RUN apt update 之前使用 USER root 切换到 root 用户执行构建即可。

这篇关于docker容器内使用apt报错E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission d的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!