https://github.com/billyteves/ubuntu-dind
ubuntu:18.04 安装docker后docker 的启动参数位置:/lib/systemd/system/docker.service
在docker中,如果出现安装错误导致的命令失败,可以采用socat方式监听docker的socket,做一个代理的sock转发数据并获取日志,用于排查问题,使用如下:
socat -v UNIX-LISTEN:/tmp/dockerapi.sock UNIX-CONNECT:/var/run/docker.sock
docker 开启跨域资源共享
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://127.0.0.1:2376 --api-cors-header=*
将虚拟机打包到docker里面
首先需要知道要打包的镜像的位置:
我自己的是用kvm直接搭建的,所以镜像一开始就是由自己创建的,例如虚拟机等镜像分别为:.vid或者.vmdk结尾
下面是打包的步骤:
1.VMDISK="/home/xxx/workspace/kvm_qume/centos1.qcow2" 指定镜像的位置
2.sudo modprobe nbd 初始化一个qemu-nbd 需要的内核模块
3.sudo qemu-nbd -c /dev/nbd0 -r $VMDISK 将虚拟机的磁盘连接到一个虚拟的设备节点上
4.ls /dev/nbd0p*
会有以下两个设备文件
/dev/nbd0p1 /dev/nbd0p2
5.sudo mount /dev/nbd0p2 /mnt 将分区挂载到/mnt
6.sudo tar cf img.tar -C /mnt .
7. sudo umount /mnt && sudo qemu-nbd -d /dev/nbd0
进过实际的运行,发现在ubuntu:18.04 上,当运行qemu-nbd -d /dev/nbd0,该设备块提示不在连接,但是使用lsblk 发现设备块仍然存在并且无法再使用了,处于占用的状态