docker和docker-compose使用过程中的疑难杂症踩坑合集

笛里谁知壮士心,沙头空照征人骨。这篇文章主要讲述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命令更新、安装依赖包

docker和docker-compose使用过程中的疑难杂症踩坑合集

文章图片

(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即可
docker和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

【docker和docker-compose使用过程中的疑难杂症踩坑合集】别忘了增加可执行权限
sudo chmod +x /usr/local/bin/docker-compose


    推荐阅读