【软件工具】最新、官方总结在Ubuntu20、22+上Docker安装与使用

本文详细介绍了如何在Ubuntu系统上安装Docker,包括设置Docker源,安装Nvidia相关工具,处理网络代理和镜像加速,以及解决Rviz运行时错误。涵盖了从基础配置到高级问题的解决方案。

用APT安装Docker

Docker官方文档链接 https://docs.docker.com/engine/install/ubuntu/
支持的Ubuntu版本
总结出快速安装,取代了原来的已被弃用的GPG-key方式,解决了无法安装问题。

# 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 "${UBUNTU_CODENAME:-$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

用DEB包安装Docker

下载安装包,https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/

sudo dpkg -i nvidia-container-toolkit_1.9.0-1_amd64.deb 
sudo dpkg -i libnvidia-container-tools_1.9.0-1_amd64.deb 
sudo dpkg -i libnvidia-container1_1.9.0-1_amd64.deb 
sudo dpkg -i libnvidia-container-tools_1.9.0-1_amd64.deb 
sudo dpkg -i nvidia-container-toolkit_1.9.0-1_amd64.deb 
sudo dpkg -i nvidia-docker2_2.10.0-1_all.deb 

安装后,检查Docker服务是否已运行。

sudo systemctl status docker
# 若显示没有该服务
sudo systemctl start docker

hello-world测试,

sudo docker run hello-world

快速入门

创建镜像

新建test_x.dockerfile文件

Dockerfile基本语法

FROM,指定初始系统
RUN,镜像内执行命令
COPY,镜像内复制
ENV,设置镜像内环境变量
ARG,Dockerfile内的变量

FROM ubuntu:22.04
MAINTAINER csu
RUN apt-get update

构建镜像

在Dockerfile所在路径下,命令为

docker build .

可加参数,-t <镜像标签> -f <path/to/Dockerfile>

常用命令

  1. 重启服务 sudo systemctl daemon-reload sudo systemctl restart docker
  2. 启动docker run -it <镜像ID>
  3. 查看所有镜像 docker imagesdocker image ls
  4. 提交镜像 docker commit -m "commit message" -a "zhangpeike" <镜像ID> <name:tag>
  5. 复制文件 docker cp <本地文件> <镜像ID>:<路径>
  6. 新终端进入运行的容器,docker exec [OPTIONS] CONTAINER COMMAND [ARG…]: docker exec -it 9df1cd89a8fe /bin/bash新开一个正在运行容器的终端docker exec -it <容器ID> /bin/bash
  7. 前端打开运行中的镜像docker attach <镜像ID>
  8. 保存镜像 docker save <镜像ID> > xxx.tar
  9. 导出镜像 docker export <镜像ID> > xxx.tar docker import 新镜像命名 < xxx.tar,注意导出不能保存镜像的历史信息。
  10. 加载镜像 docker load -i xxx.tar
  11. 本地与镜像路径的映射 docker run -v /local_path:/docker_path
  12. 设置共享内存大小:docker --shm-size="16g"
  13. 查看commit记录:docker inspect <镜像ID>

重启服务命令无效,Failed to start Docker Application Container Engine,
sudo rm -rf /var/lib/docker /etc/docker
sudo rm /etc/apparmor.d/docker
sudo rm -rf /var/run/docker.sock
sudo systemctl restart docker

Docker使用常见问题及解决

  1. 编译Dockerfile遇错
    Get https://registry-1.docker.io/v2/: authenticationrequire
    由于网络代理需要
    /etc/systemd/system/docker.service.d/下新建文件docker-proxy.conf
[Service]
Environment="HTTP_PROXY=http://公司账号:密码@proxy.xxx.com:8080"
Environment="HTTPS_PROXY=http://公司账号:密码@proxy.xxx.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1"

或新建http_proxy.conf,

[Service]
Environment="HTTP_PROXY=192.168.2.194:7890"
Environment="HTTPS_PROXY=192.168.2.194:7890"
  1. no such host问题
    Get https://registry-1.docker.io/v2/: proxyconnect tcp: dial tcp: lookup http: no such host
    推断为无法访问docker镜像官网,设置镜像加速器地址,如国内云厂商的地址,修改文件/etc/docker/daemon.json
{
    "registry-mirrors": [
    "https://xxx.mirror.x.com"
    ]
}

重启daemon和docker
systemctl daemon-reload && systemctl restart docker

  1. 编译Dockerfile,RUN apt-get install失败
    容器需要代理方可上网,主机上新建或编辑~/.docker/config.json
{
  "proxies":
  {
    "default":
    {
      "httpProxy": "http://账号:密码@proxy.x.com:8080",
      "httpsProxy": "http://账号:密码@proxy.x.com:8080",
      "noProxy": "localhost,127.0.0.1"
    }
  }
}

设置后镜像中apt-get install出现Failed to fetch http...,软件版本问题,改为apt-get install --fix-missing

如何在docker镜像中使用GPU

安装Nvidia-docker

官方链接 https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
比旧版解决了GPGkey报错问题。

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
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
sudo apt-get install -y \
      nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}

配置与使用

sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# 免除sudo,自动root运行docker
nvidia-ctk runtime configure --runtime=docker --config=$HOME/.config/docker/daemon.json
systemctl --user restart docker
sudo nvidia-ctk config --set nvidia-container-cli.no-cgroups --in-place

用hello-world测试

docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

顺利的结果,能看到nvidia-smi打印的显卡列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值