1.docker 的基本概念
Docker 包括三个基本概念:
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
2.docker 的使用
runoob@runoob:~$ docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world
-
docker: Docker 的二进制执行文件。
-
run: 与前面的 docker 组合来运行一个容器。
-
ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
-
/bin/echo "Hello world": 在启动的容器里执行的命令
2.1运行交互式容器
-
-t: 在新容器内指定一个伪终端或终端。
-
-i: 允许你对容器内的标准输入 (STDIN) 进行交互。
tips:docker images 可以查看已经有的镜像.
笔者虚拟机已经有的镜像:
3.nvdla docker
3.1 常见操作
1.把普通用户加入到docker组中
这里的普通用户是huali,组docker在安装docker的时候,就已经添加了,所以只需要执行两个操作即可:
# sudo gpasswd -a $USER docker
# newgrp docker
将用户加入docker组之后,发现使用docker ps或者docker images不会提示权限不足了。
2.本地目录copy到容器目录
#sudo docker cp ~/nvdla/sw/prebuilt/linux/basic.nvdla caf14f21334a:/usr/local/nvdla
反过来也可以将docker中的数据传输到主机中。
进入docker 也可以进入家目录进行运行
3.查看正在运行的容器
#docker ps -a
3.2 笔者一些docker的实践
3.2.1 构建nvdla的virtual platform
docker run -it -v /home:/home nvdla/vp
这里解释一下docker挂载本地目录,docker可以支持把一个宿主机上的目录挂载到镜像里。比如说,交互模式运行docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash
后台运行docker run -d -v /home/dock/Downloads:/usr/Downloads --name ubuntu1 ubuntu64
通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。
那么这里冒号前的/home 就是宿主目录,冒号后的/home为镜像内挂在的路径,前面加上了 -v参数。
然后进入容器中的nvdla文件夹:
cd /usr/local/nvdla