nvidia-docker2 在ubuntu16.04上安装出现unmet dependencies: docker-ce 与 docker-ee 的解决方法

因为需要安装有gpu版本的docker,所以我们安装一下nvidia-docker2。

1. nvidia-docker VS nividia-docker2

一个浅显的原因是,nvidia-docker已经被官方废弃了。 最大的原因是,nvidia-docker作为Docker的一个包装,需要运行一个独立的daemon,与Docker的生态不能很好地兼容。 比如,docker-compose、docker swarm与Kubernetes,都不能很好的和nvidia-docker一起工作。nvidia-docker2解决了这些问题,甚至能在非官方CUDA镜像以外的镜像工作。 nvidia-docker是一个Volume Plugin,而nvidia-docker2则是一个Docker Runtime,机制的差异,带来了巨大的改进。所以这里我们安装nvidia-docker2。

2. 官方安装出现问题

官方给出的代码:

# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker

# Add the package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

# Install nvidia-docker2 and reload the Docker daemon configuration
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd

# Test nvidia-smi with the latest official CUDA image
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

前面几个步骤没有问题,然后运行sudo apt-get install -y nvidia-docker2出现错误:

nvidia-docker2 : 依赖: docker-ce (= 18.06.3~ubuntu) 但是它将不会被安装
或docker-ee (= 18.03.1ee3-0~ubuntu) 但无法安装它。
在这里插入图片描述

3. 问题出现的原因

这个原因是因为我们安装nvidia-docker2是建立在docker-ce上的,然而我们安装的nvidia-docker2和docker-ce版本是不匹配的。

4. 解决

我们可以先根据nvidia-docker2的版本重新安装一下docker-ce的版本。

4.1 列举nvidia-docker2可用版本

使用命令:apt-cache madison nvidia-docker2 nvidia-container-runtime
在这里插入图片描述
那我们就准备安装上面第一个版本,即:
nvidia-docker2:2.0.3+docker18.06.2-2nvidia-container-runtime:2.0.0+docker18.06.2-2。确定这个版本之后我们卸载之前安装docker-ce。

4.2 安装指定版本的docker-ce

我们可以使用docker version命名查看之前我们安装docker-ce版本,我这里是docker18.06.3而nvidia-docker2最新支持的是18.06.2。所以当然出现错误啦! 所以的话我们需要卸载docker-ce。

4.2.1 卸载旧版本的docker-ce

参考文章如何在ubuntu 中彻底删除docker

4.2.2 安装指定版本的docker-ce

首先我们查看可用的docker-ce版本,使用命令:apt-cache madison docker-ce
在这里插入图片描述
这里发现最新的是docker-ce: 18.06.3~ce~3-0~ubuntu也就是我们不指定docker version默认安装的。为了和后面的nvidia-docker2适配,我们安装第二个,即
docker-ce: 18.06.2~ce~3-0~ubuntu。使用命令行安装,参考安装Docker

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update

# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-# ce/linux/ubuntu xenial/stable amd64 Packages
#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
sudo apt-get -y install docker-ce=18.06.2~ce~3-0~ubuntu

4.3 安装指定版本的nvidia-docker2

参考:nvidia-docker2 在ubuntu18.04上安装出现依赖: docker-ce 与 docker-ee 的解决方法

# Add the package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2=2.0.3+docker18.06.2-2 nvidia-container-runtime=2.0.0+docker18.06.2-2
sudo pkill -SIGHUP dockerd

在这里插入图片描述

4.4 测试

列出当前docker-ce和nvidia-docker2版本:
在这里插入图片描述
不过在这之前,最好修改docker默认存储位置:ubutu16.04修改Docker默认存储位置
执行命令:

# Test nvidia-smi with the latest official CUDA image
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

在这里插入图片描述

over, 折腾了好几天终于也是把docker环境配置好了。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值