安装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 +