【工具】Docker使用指南

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装Docker

#预备软件
sudo apt install apt-transport-https ca-certificates curl software-properties-common
#添加docker的源
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce
sudo systemctl status 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 

创建镜像

Dockerfile基本语法

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

FROM ubuntu:16.04
MAINTAINER kirk
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

环境设置记录

  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

安装Nvidia-docker

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 udo | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
#Restart the Docker daemon to complete the installation after setting the default runtime

Rviz报错问题分析与解决

运行rviz出错libGL error: No matching fbConfigs or visuals found

安装Nvidia驱动

  1. 查看板卡ubuntu-drivers devices
  2. 自动安装 ubuntu-drivers autoinstall
    问题:缺少依赖,递归安装解决依赖。
  3. 再次运行rviz,提示
No protocol specified
QXcbConnection: Could not connect to display :1
Aborted (core dumped)

需要在主机上执行 xhost +

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值