前置条件:安装docker
概念:
如果说镜像是类,那么容器就是类的实例对象。
这样说,还是有点抽象,没有学过面向对象的同学理解起来还是费劲。
镜像好比是windows 10系统光盘,容器好比是用这个windows 10系统光盘安装的windows 10操作系统(到某个笔记本电脑)。
光盘(镜像)是一个静态概念,它只是记录数据的一块存储介质;只可以用来安装操作系统,不可以进入光盘(镜像)做任务。
安装好的操作系统(容器)是动态概念,可以进入操作系统(容器)完成各种任务,例如可以启动mysql、php或者等服务。
镜像和容器的关系:
用镜像创建容器(相当于用光盘安装操作系统)参考第三章创建容器
用容器保存镜像(相当于用安装好的操作系统刻录一张光盘出来)参考第9章镜像保存
常用命令:
1、加载镜像
$ sudo docker load -i rockchip_sdk.tar
2、查看镜像
$ sudo docker images
新加载的镜像没有名字,使用tag命令取一个名字。
$ sudo docker tag 4135191fdace rockchip:1.8
再docker images查看,有名字了,即rockchip:1.8,由REPOSITORY和TAG两个字段构成。
有点像人的姓和名。我们只需要把这个镜像的名字记住就能操作它了。
3、创建容器
$ sudo docker run -itd --name=myrockchip rockchip:1.8
i :表示以交互模式运行容器(让容器的标准输入保持打开)
-d:表示后台运行容器,并返回容器ID
-t:为容器重新分配一个伪输入终端
--name:为容器指定名称 这里指定容器名称为myrockchip
查看容器
$ sudo docker ps -a
4、进入容器
$ sudo docker exec -it myrockchip /bin/bash
进入后,就相当于进入了一个虚拟机,可以执行里面的操作了。
容器里面不支持ifconfig命令;支持ps命令。
退出容器用exit命令。
5、删除容器
sudo docker rm -f myrockchip
最后一个参数也可以是容器id。rm后面加上参数i就可以删除镜像(即rmi -f)。
6、挂载文件夹
$ sudo docker run -itd --name=myrockchip -v ~/work:/home/work rockchip:1.8
-v 宿主机目录:容器目录
其余参数与创建容器用的相同。
挂载成功后,宿主机和容器就可以对共享目录work进行操作了。
在容器里的work目录创建一个文件test.txt,退出。宿主机的work目录也有这个文件。
如果容器已经创建了,需要新增加挂载文件夹,按
docker对已经启动的容器添加目录映射(挂载目录)_docker容器增加挂载目录_alwaysonline819的博客-CSDN博客
的方法,即可完成新目录挂载。如果执行后容器消失或者挂载不起作用,多半是json文件改得有问题。
1)systemctl stop docker.socket
systemctl stop docker
2)修改config.v2.json和hostconfig.json 添加挂载目录
3)systemctl start docker
7、docker中编译工程
从宿主机拷贝一个c++文件(例如test.cpp)到work目录。
尝试编译运行,没有问题!与宿主机中编译完全一样。
8、镜像提交
sudo docker commit a8dca7deb78d rockchip:1.9
a8dca7deb78d 容器id
rockchip:1.9 镜像名:新标签
9、镜像保存
sudo docker save -o rockchip.tar rockchip:1.9
rockchip:1.9 本地刚生成的docker镜像
rockchip.tar 从 rockchip:1.9导出的tar包