解决:E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)

目录

  • 问题
  • 解决
  • 结尾

问题

为了让容器服务启动更加方面,于是自己手写了一个 docker-compose.yml 配置脚本。脚本内容如下:

version: '3'
services:
  fake-sqs:
    image: registry.cn-beijing.aliyuncs.com/liuzhen007/sqs-x86:1.0.6.1
    container_name: fake-sqs
    restart: always
    network_mode: "host"

完成后启动服务,服务也运行正常,没有报错。自己运行如下命令进入容器查看 docker 运行状况:

docker exec -it 81402e58e15e bash

查看服务端口监听状态,命令如下:

docker@al-bj-boom-hb-backstage-01:/$ netstat -an | grep 4566 bash: netstat: command not found

提示没有工具命令 netstat,于是执行如下命令安装:

apt-get install net-tools

此时,却发生了如下报错信息:

docker@al-bj-boom-hb-backstage-01:/$ apt-get install net-tools

E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)

E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

解决

网上搜索解决方案时,有一种说法是删除提示的文件:/var/lib/dpkg/lock,感觉不是很靠谱,自己觉得是别的原因导致的。

很可能是自己写的 docker-compose.yml 配置脚本有问题,于是自己顺着方向查下去,果然最后让自己发现了一个配置参数 user: root 。瞬间,自己就知道哪里出错误了,于是修改 docker-compose.yml 配置脚本,修改后内容如下:

version: '3'
services:
  fake-sqs:
    image: registry.cn-beijing.aliyuncs.com/liuzhen007/sqs-x86:1.0.6.1
    container_name: fake-sqs
    restart: always
    network_mode: "host"
    user: root

然后重新启动服务,再执行刚才的命令,问题解决。

结尾

自己对 docker-compose 的使用不是很了解,因此出现了这样的基础错误。其实,实际开发中遇到的很多问题,最终定位都有可能是非常小的点。你遇到哪些非常简单的错误呢?欢迎评论。


作者简介:大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,同时也是CSDN博客专家、华为云享专家(共创编辑)、InfoQ 签约作者,欢迎关注我分享更多干货!

上一篇:Dom4j解析Xml文件,Dom4j创建Xml文件


下一篇:centos6.8下安装部署LNMP-(nginx1.8.0+php5.6.10+mysql5.6.12)