docker和docker-compose使用过程中的疑难杂症踩坑合集
Posted 啊a阿花
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker和docker-compose使用过程中的疑难杂症踩坑合集相关的知识,希望对你有一定的参考价值。
一、E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) \\
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
(1)前情概要
在下载docker的时候需要使用apt命令更新、安装依赖包
(2)触发条件
apt有概率执行完命令后没有退出,而是继续在后台运行,当你再次使用apt时,可能就会报错
(3)解决办法(一):kill apt线程
- 查看所有apt线程的id
ps -A | grep apt
- 杀死相应的线程
sudo kill 线程id
解决办法(二):删除锁定文件
当运行 apt-get 或者 apt 命令时,/var/lib/apt/lists/、/var/lib/dpkg/、/var/cache/apt/archives/ 中会创建锁定文件,这有助于运行中的 apt-get 或者 apt 进程能够避免被其它需要使用相同文件的用户或者系统进程所打断。当该进程执行完毕后,锁定文件将会删除。
第一个方法中没有看到 apt-get 或者 apt 进程的情况下可能是因为进程因为某个原因被杀死了,但是锁定文件还没用被删除,手动删除锁定文件即可。
首先删除三个文件夹下的锁定文件
$ sudo rm /var/lib/dpkg/lock
$ sudo rm /var/lib/apt/lists/lock
$ sudo rm /var/cache/apt/archives/lock
然后强制重新配置软件包
$ sudo dpkg --configure -a
接下来,更新你的软件包源列表
$ sudo apt update
#或者
$ sudo apt-get update
二、You are not allowed to use Docker. You must be in the
(1)前情概要
当你安装完docker后想启动一下,试用一下相应的docker命令,可是却发现命令行报错
(2)解决办法
这是因为我们当前的登录用户不在docker的用户组里,没有权限
解法一:
添加用户到docker用户组,注意第一步一般安装docker时就默认创建了,可以直接从第二步开始,如果添加到docker用户组之后未生效可以试一下第四步
- 创建docker用户组
sudo groupadd docker
- 应用用户加入docker用户组
sudo usermod -aG docker $你的登录用户 #sudo usermod -aG docker $ahua
- 重启docker服务
sudo systemctl restart docker
- 切换或者退出当前账户再从新登入
su root #切换到root用户
su $用户 #再切换到原来的用户
解法二:
在docker命令前添加 sudo或者直接切换到root用户
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具
三、/usr/local/bin/docker-compose: line 1: Not: command not found
(1)前情概要
当你需要通过docker-compose去部署一个已有的项目时,需要下载dockers-compose,于是你运行命令进行下载
sudo curl -L "https://github.com/docker/compose/releases/download/v1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
可是下载完使用docker-compose --version测试时发现,报错了,而且打开对应目录下的docker-compose文件时,里面是空的,什么都没有
(2)解决办法
可以试一下换一种下载方式,重新下载
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
上面不行的话可以试试这个
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
别忘了增加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
四、Failed to execute script docker-compose
(1)前情概要
当你已经安装好了docker-compose,准备部署项目了,你在命令行输入 docker-compose up
或者docker-compose build
时你突然发现,报错了
(2)解决办法
这个解决办法看起来好像有点不蠢,但是事实也许就是这样,你可能并没有启动你的docker,所以输入systemctl start docker
将docker启动即可
五、Version in "./docker-compose.yml" is unsupported
(1)前情概要
下载好了,命令也有了但是还是报错了,这因为你的docker-conpose版本和项目中的docker-compose.yml中定义的版本不匹配
(2)解决办法
这个根据安装时的指导,重新下载匹配版本的docker-compose即可
将链接里的版本换成匹配的版本即可
$ sudo curl -L "https://github.com/docker/compose/releases/download/v1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
别忘了增加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
以上是关于docker和docker-compose使用过程中的疑难杂症踩坑合集的主要内容,如果未能解决你的问题,请参考以下文章
Docker系列- Docker-compose使用与负载均衡