docker安装

前言

Docker是一个开源的应用容器引擎,是用Go语言实现的,Docker可以让开发者打包他们的应用和依赖包到轻量级、可移植的容器中,然后可以发布到任何Linux机器中。容器的优点很多,比如打包应用和依赖方便部署;做环境隔离,在做深度学习时就可以在容器中进行,安装各种包,不会污染到宿主机;容器开销性能很低,我们可以无所忌惮地创建容器。下图是在宿主机中创建了三个容器。

在正式学习Docker之前,先介绍一下Docker中的三个基本概念:

镜像(Image) :Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

容器(Container) :镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

介绍了Docker的使用场景、优点和基本概念,下面讲解一下,Docker的安装。

1.Ubuntu Docker安装

下面是官方提供的安装方法,安装的是Docker Engine,非Docker桌面版,满足要求的Ubuntu系统为64位的20.04、22.04、23.10版本

# 增加 Docker 官方的 GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 增加源仓库到 Apt 源:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

# 安装最新版本的 Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 运行 hello-world 镜像来验证 Docker 是否安装成功
sudo docker run hello-world

# 也可以运行下面的命令查看 Docker 的运行状态
sudo systemctl status docker

2.Ubuntu nvidia-docker安装

在使用Docker做深度学习时,需要使用cuda资源,但是原生的Docker不支持在容器中使用nvidia GPU资源,那么就需要安装nvidia-docker,它是对docker的封装,提供了一些必要的组件,可以方便地在容器中使用GPU资源执行代码。

curl https://get.docker.com | sh
sudo systemctl start docker && sudo systemctl enable docker

# 设置stable存储库和GPG密钥
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# nvidia-docker2更新软件包清单后,安装软件包(和依赖项)
sudo apt-get update
sudo apt-get install -y nvidia-docker2

# 设置默认运行时后,重新启动Docker守护程序以完成安装
sudo systemctl restart docker

安装显卡驱动后就可以使用Docker做深度学习相关的工作了

sudo apt-get install nvidia-driver-535

3.修改Docker默认存储路径

这一步是可选操作,不想在系统盘存储镜像和容器时,就可以更改Docker的存储目录

# 清空docker存储,这条命令慎重使用
docker system prune -a

# 编辑 /etc/docker/daemon.json 文件
vi /etc/docker/daemon.json 
{
  "data-root": "/data/docker-data"
}

# 然后重启 docker 服务
systemctl restart docker

# 再次查看 docker 信息,就可以看见Docker Root Dir发生了变化 
docker info

4.总结

完成了nvidia-docker安装之后,就可以随意在容器中做实验和部署服务了,也不用担心把系统环境污染了和把系统搞坏了。做深度学习时推荐在容器中安装一个jupyter-lab,使用起来非常方便。