如何在Docker中运行Docker

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 发现设备块仍然存在并且无法再使用了,处于占用的状态

原文地址:https://www.cnblogs.com/estherSH/p/13028878.html