安装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>
常用命令
- 重启服务 sudo systemctl daemon-reloadsudo systemctl restart docker
- 启动docker run -it <镜像ID>
- 查看所有镜像 docker images或docker image ls
- 提交镜像 docker commit -m "commit message" -a "zhangpeike" <镜像ID> <name:tag>
- 复制文件 docker cp <本地文件> <镜像ID>:<路径>
- 新终端进入运行的容器,docker exec [OPTIONS] CONTAINER COMMAND [ARG…]: docker exec -it 9df1cd89a8fe /bin/bash新开一个正在运行容器的终端docker exec -it <容器ID> /bin/bash
- 前端打开运行中的镜像docker attach <镜像ID>
- 保存镜像 docker save <镜像ID> > xxx.tar
- 导出镜像 docker export <镜像ID> > xxx.tardocker import 新镜像命名 < xxx.tar,注意导出不能保存镜像的历史信息。
- 加载镜像 docker load -i xxx.tar
- 本地与镜像路径的映射 docker run -v /local_path:/docker_path
- 设置共享内存大小:docker --shm-size="16g"
- 查看commit记录:docker inspect <镜像ID>
环境设置记录
- 编译Dockerfile遇错
 Get https://registry-1.docker.io/v2/: authenticationrequire
 由于网络代理需要
 在/etc/systemd/system/docker.service.d/下添加文件docker-proxy.conf,
[Service]
Environment="HTTP_PROXY=http://公司账号:密码@proxy.x.com:8080"
Environment="HTTPS_PROXY=http://公司账号:密码@proxy.x.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1"
- 第二个问题
 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
- 编译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驱动
- 查看板卡ubuntu-drivers devices
- 自动安装 ubuntu-drivers autoinstall
 问题:缺少依赖,递归安装解决依赖。
- 再次运行rviz,提示
No protocol specified
QXcbConnection: Could not connect to display :1
Aborted (core dumped)
需要在主机上执行 xhost +