1. 前言

由于业务需要,又亲自上手在服务器上安装了Docker,并且需要使用GPU显卡。简单来说,就需要3个步骤,安装Docker Engine,然后将用户加入到Docker组里。如果有需要GPU的,需要安装nvidia-container-toolkit。(需要注意的是,以下操作均需要root权限,普通用户无法安装Docker)。

2. 安装Docker Engine

无论是有界面的还是无界面的系统,都可以安装Docker Engine。这里我们使用的是官方的安装步骤。

首先,应该使用以下命令更新apt包:

sudo apt-get update

如果要安装最新的版本,使用以下命令:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

最后,验证是否安装成功,使用以下命令:

sudo docker run hello-world

根据界面提示,就能够知道已经成功安装了。

2.1 直接安装提示报错

直接安装时,可能会出现下面的错误。

14 Ubuntu docker 安装 离线 ubuntu 安装docker_容器


这时候需要执行2步。

第一步,添加源地址:

打开 /etc/apt/sources.list.d/docker.list 中添加下面内容

deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable

要能记住自己在改些什么,如果记不住,建议先备份该文件:

sudo cp /etc/apt/source.list /etc/apt/source.list.back

第二步,将公钥添加至服务器,即终端中输入:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys '7EA0A9C3F273FCD8'

然后再重复执行上面的安装步骤即可。

但是如果报错,还会引出下一个问题,那就是hello world拉取不到,这个问题会出现“Unable to find image ‘hello-world:latest’ locally”的错误,这时候就需要再修改一下镜像源到阿里云。

  1. 在/etc/docker下,新建daemon.json文件
sudo touch daemon.json
  1. 开daemon.json权限
sudo chmod 777 daemon.json
  1. 进入daemon.json输入镜像地址:
vim daemon.json

然后输入

{ 
 "registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"] 
 }

并保存退出即可。

  1. 重启
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl status docker
  1. 然后再执行hello world。
sudo docker run hello-world

3. 将用户加入Docker组

首先创建Docker组,一般来说,都已经创建完毕了。

sudo groupadd docker

然后将目标用户加入到docker组中,其中$USER可以替换为任何用户名,默认为当前用户。

sudo usermod -aG docker $USER

接着,重新登陆或者使用以下命令更新组:

newgrp docker

最后使用目标用户进行测试:

docker run hello-world

4. 安装nvidia-container-toolkit

首先执行命令:

curl https://get.docker.com | sh \
  && sudo systemctl --now enable docker

然后,设置GPG密钥:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

最后,执行以下命令完成安装:

sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker

5. ChatGPT给出的建议

5.1 安装Docker和设置用户

在Ubuntu 20.04上安装Docker步骤如下:

更新Ubuntu系统:
$ sudo apt update 安装Docker需要的依赖:$ sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common 添加Docker官方GPG key:$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 添加Docker源:$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" 更新Ubuntu软件包索引:$ sudo apt update 安装Docker:$ sudo apt install docker-ce docker-ce-cli containerd.io 将当前用户加入docker用户组:$ sudo usermod -aG docker ${USER} 重新登录使更改生效:$ su - ${USER} 现在用户可以使用Docker了,可以使用$ docker run hello-world 检查是否安装成功。

5.2 安装nvidia-docker2

  1. 获取nvidia-docker2 GPG密钥:$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
  2. 在您的包管理器中添加nvidia-docker2存储库:$ 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
  3. 更新系统软件包列表:$ sudo apt-get update
  4. 安装nvidia-docker2:$ sudo apt-get install -y nvidia-docker2
  5. 重启Docker服务:$ sudo systemctl restart docker

完成这些步骤后,就可以使用nvidia-docker2来启动具有GPU支持的Docker容器了。

5.3 使用Docker

如果你已经安装了Docker,可以使用下面的步骤开始使用Docker。

  1. 搜索Docker镜像:使用命令 docker search <image_name>在Docker Hub上搜索您想使用的镜像。
  2. 下载Docker镜像:使用命令 docker pull <image_name>下载您选择的镜像。
  3. 运行Docker容器:使用命令 docker run --rm -it <image_name> /bin/bash运行一个Docker容器,并在其中执行操作。

您可以通过阅读Docker文档和教程,以及通过使用Docker命令来了解更多关于如何使用Docker的信息。请注意,使用Docker需要一定的技术知识和经验。

5.4 帮助文档

您可以在Docker官方网站上访问Docker文档和教程:

Docker文档:https://docs.docker.com/
Docker教程:https://docs.docker.com/learn/
您还可以在网上搜索其他权威的Docker教程和教程,以便了解如何使用Docker,以及如何在您的项目中使用Docker。如果您对Docker没有太多经验,建议您从入门教程开始学习,然后再尝试更复杂的应用。