1. docker commit之后很大,如何轻量化?两种方法:
a. 方法一:
先进入要打包的容器,执行以下命令对根目录下的文件打包,本质上是对容器内的感兴趣的内容进行压缩打包,将不需要的内容exclude掉,以下面代码为例将根目录“/”下的内容打包为1.tar,在打包过程中排除掉/proc,/sys以及1.tar。注意要将路径放在最后,不要放在--exclude之前,否则可能会导致打包好的镜像大小远超目录下内容大小。
tar -cvf 1.tar --exclude=/proc --exclude=/sys --exclude=1.tar / (正确方法)
tar -cvf 1.tar / --exclude=/proc --exclude=/sys --exclude=1.tar (错误方法)
然后将打包好的文件拷贝到宿主机下:
sudo docker cp 容器ID:/1.tar .
最后生成新的镜像:
cat 1.tar | sudo docker import - 1
通过docker images查看,可以看到有一个新生成的名为img的镜像,体量会小很多。
b. 方法二:
通过Dockerfile制作镜像,具体自行查找如何编写
2. docker开机自启:
docker run -idt --restart=always ********
3. docker绑定本地硬件(dev为例):
docker run -dit -v /dev:/dev --privileged --restart=always --net=host --name ros ros bash
4. docker绑定本地显示资源:
docker run -di -v /dev:/dev --privileged --net=host --name ros -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ros bash
5. docker镜像导出与导入:
导出:
docker commit ros01 ros02 (ros01是容器名称,ros02是image名称)
docker save -o ros02.tar ros02
导入:
docker load -i ros02.tar
6. docker磁盘清理:
docker运行一段时间后,磁盘占用很大,在/var/lib/docker路径下,那么如何清理呢?
清理无用的镜像
docker image prune
清理所有未使用的镜像
docker image prune -a
清理无用的容器
docker container prune
清理不用的数据卷
docker volume prune
清理无用的网络链接
docker network prune
一键清理停掉的container、悬挂的image(没有tag)、没有使用的network、数据卷
docker system prune