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线程

  1. 查看所有apt线程的id
ps -A | grep apt
  1. 杀死相应的线程
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用户组之后未生效可以试一下第四步

  1. 创建docker用户组
 sudo groupadd docker
  1. 应用用户加入docker用户组
 sudo usermod -aG docker $你的登录用户 #sudo usermod -aG docker $ahua
  1. 重启docker服务
 sudo systemctl restart docker
  1. 切换或者退出当前账户再从新登入
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使用与负载均衡

docker-compose简介

使用docker-compose运行springcloud项目

如何使用 docker-compose 重启单个容器

Docker那些事儿之编排工具docker-compose

使用docker部署nginx+tomcat架构:使用docker-compose简化部署操作