Linux安装Docker及常见问题

安装Docker

1. 卸载非官方和旧版本的Docker

参考:Install Docker Engine on Ubuntu

# 卸载非官方的
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
# 卸载旧版本的
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
# 删除Images, containers, volumes, or custom configuration files
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo apt-get autoremove

2. 安装Docker Engine

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

在首次安装 Docker Engine 之前,需要设置 Docker repository。之后,可以从repository安装和更新 Docker。

  1. 设置Docker’s apt repository.
# Add Docker's official 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

# Add the repository to Apt sources:
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
  1. 安装Docker packages.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. 验证是否安装成功
docker --version
sudo docker run hello-world

此命令下载demo镜像并在容器中运行。容器运行时,它会打印一条确认消息并退出。

注意:如果无法使用apt安装,可以手动安装

docker数据存放位置

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

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

非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版本大于 1.10.0 的用户,可以通过修改daemon配置文件/etc/docker/daemon.json来加速镜像:

sudo tee /etc/docker/daemon.json <<-EOF
{
  "registry-mirrors": [
  		"https://docker.mirrors.ustc.edu.cn", 
		"https://registry.docker-cn.com", 
		"http://hub-mirror.c.163.com", 
		"https://mirror.ccs.tencentyun.com"
  ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

目前很多国内镜像已失效!(例如上述的,参考),可以通过代理解决,参考三分钟!快速解决Dockerhub镜像站无法访问问题!

配置好page以后,通过 docker pull <page_url>/<image>[:tag] 拉取镜像。

调用本机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

注意:目前nvidia-container-runtime已被合并到nvidia-container-toolkit

参考:Installing the NVIDIA Container Toolkit

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/stable/deb/nvidia-container-toolkit.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-container-toolkit

配置nvidia-container-toolkit(建议先配置镜像加速后再执行下面的指令):

sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值