我注意到一个问题,即在容器内使用apt-get install时会失败,原因如下:
- 该软件包已经安装过了,
- 没有使用sudo。
可以通过创建一个简单的容器来重新创建这个问题,例如:
docker run -it ubuntu:latest /bin/bash
在容器中运行以下命令:
apt-get install software-properties-common
apt-get install software-properties-common
第二次尝试会失败并显示“已终止”信息。如果在语句前加上sudo,它将成功执行:
sudo apt-get install software-properties-common
如果容器内的用户是root,为什么重新安装现有软件包时需要sudo呢?我不认为这与AUFS文件系统有关,因为使用sudo前缀将能够完成操作。
这是使用Docker 1.10和Ubuntu镜像。
apt-get update
。 - user2915097apt-get update
正在读取软件包列表... 完成 E: 无法打开锁定文件/var/lib/apt/lists/lock - 打开(13:权限被拒绝) E: 无法锁定目录/var/lib/apt/lists/` - Charlie Parkerdocker exec -u root -t -i container_id /bin/bash
以root用户身份跳转到正在运行的容器中。您尝试过这个吗? - Charlie Parker