今天准备跑通VDOSLAM的代码,但是现在电脑上的虚拟机装起OpenCV竟然出现各种各样的问题,原工程给出了一个Dockerfile,正好接触以下Docker这个工具;
1 Docker
docker是一个用来装应用的容器,可以把任何想得到的程序放在docker中,就像装水的杯子、装书的背包。
在使用上;
①docker解决了运行环境不一致所带来的问题。将一台机器上的运行环境原封不动地运到另一台机器;
②docker可以为用户提供隔离性。在多用户使用一台主机时不会受对方的代码错误影响(死循环),docker启动时以及限定了使用资源;
③快速扩充需要的服务器数量,在急需扩充主机数量时只需按照标准的方法运行即可;
1.1 镜像
镜像即image,本质上来说镜像就是一系列文件,可以包括我们应用程序的文件,也可以包括我们应用的运行环境的文件;
2 安装
2.1 一键安装
使用国内的daocloud:
curl -sSL https://get.daocloud.io/docker | sh
2.2 手动安装(使用 Docker 仓库)
首先需要设置 Docker 仓库,您可以从仓库安装和更新 Docker 。
①卸载旧版本:
sudo apt-get remove docker docker-engine docker.io containerd runc
②更新apt包索引
sudo apt-get update
🌂安装 apt 依赖包,用于通过HTTPS来获取仓库
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
④添加 Docker 的官方 GPG 密钥
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
⑤验证您现在是否拥有带有指纹的密钥
sudo apt-key fingerprint 0EBFCD88
应该出现以下内容:
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
⑥设置稳定版仓库
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
$(lsb_release -cs) \
stable"
安装 Docker Engine-Community
⑦再次更新apt包
sudo apt-get update
⑧安装对应版本
sudo apt-get install docker-ce docker-ce-cli containerd.io // 安装最新版本
也可自己选定需要安装的版本,比如VERSION_STRING取5:20.10.16~ 3-0~ubuntu-bionic
apt-cache madison docker-ce // 显示可用版本
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io // 下载对应版本
⑨测试 Docker 是否安装成功
sudo docker run hello-world
3 使用
3.1 创建镜像
在Dockerfile所在文件夹终端运行以下命令
docker build -t myubuntu:v1 .
其中各个符号的意义为:
①docker:docker命令;
②build:编译;
🌂**-t**:镜像的名字及tag,通常name:tag或者name格式;可以在一次构建中为一个镜像设置多个tag,参考docker build命令详解;
④myubuntu:生成镜像的名称;
⑤v1:生成镜像的版本号;
⑥**.**:指定镜像构建过程中的上下文环境目录,简言之即docker是通过docker命令(客户端工具)与docker引擎交互,真正的事件是在docker引擎中发生的,所以docker引擎需要某个路径下文件的一份拷贝,这个路径即为上下文环境目录,给了docker引擎各项操作需要的内容;
3.2 删除Docker镜像和容器
删除镜像:docker rmi + 镜像ID;
用以下命令可以删除多个镜像:
docker rmi <your-image-id> <your-image-id> ...
同理,删除容器:docker rm + 容器ID;
如果 Docker 容器正在运行,你在删除它们之前需要先停止运行
docker stop $(docker ps -a -q) // 停止所有容器
4 相关设置
①启动Docker服务
sudo systemctl start docker
②设置开机自启动docker
sudo systemctl enable docker
③查看Docker是否开启,出现绿色圆点表示服务正常开启
sudo systemctl status docker