Linux系统使用Docker常见问题

引言

这几天在ubuntu系统上配置docker的深度学习环境配麻了,遇到了各种各样的问题,但是有一些问题是共性的,在这里总结一下。


Desktop or Engine ?

在docker安装官网中,我们发现docker有desktop和engine两种,到底安装哪一个?简单来说,desktop除了指令还包含了图形化界面,engine只能使用指令。我建议安装engine,毕竟是Linux系统,同时也更轻量。
Linux系统使用Docker常见问题_第1张图片

非root用户使用docker指令权限不够问题

普通用户直接运行docker指令会遇到如下报错,这是因为普通用户没有读写Unix socket的权限。

Got permission denied while trying to connect to Docker daemon socket at unix: … connect: permission denied

安装好docker后,会自动生成一个docker用户组,docker守护进程启动的时候,会赋予docker用户组读写Unix socket的权限,那么只要将当前用户加入到docker用户组中就可以了,让root用户运行下列指令:

sudo gpasswd -a $USER docker   #将用户加入到docker用户组中
newgrp docker                  #更新用户组

docker数据存放位置

有的时候我们可能需要这些信息,比如卸载docker,镜像文件和容器文件需要我们手动去删除。

/var/lib/docker      # 镜像
/var/lib/containerd  # 容器

配置镜像加速

默认镜像源在国外,对docker版本大于 1.10.0 的用户,可以通过修改daemon配置文件/etc/docker/daemon.json来加速镜像:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-EOF
{
  "registry-mirrors": ["镜像源"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

调用本机GPU硬件

如果在容器中需要使用本机的GPU,那么会运行指令docker run --gpus all …,通常会遇到如下错误:

docker: Error response from daemon: could not select device driver … with capabilities: [[gpu]].

对此我们需要安装nvidia-container-runtime包,但是默认的软件源是没有这个包的,因此需要先添加nvidia的软件源,可以编写并运行如下脚本:

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

然后就可以安装nvidia-container-runtime包了:

sudo apt-get install nvidia-container-runtime

你可能感兴趣的:(docker,linux,运维)