安装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-reload
sudo 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.tar
docker 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 +