將虛擬機打包到Docker中


一.生成tar文件

1.已知虛擬機鏡像文件位置,使用鏡像打包

將虛擬機打包到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 發現設備塊仍然存在並且無法再使用了,處於占用的狀態

 

2. 鏡像文件不在本地,由運維人員提供

sudo mount -o loop partition.dump /mnt

sudo tar cf $(pwd)/img.tar -C /mnt .

sudo umount /nt

 

3.在系統運行的時候登錄到虛擬機上導出tar文件

sudo tar cf /img.tar --exclude=/img.tar --one-file-system /

注意:采用直接導出的方式會有如下問題:(1)復制出來的文件可能會出現狀態不一致的情況,(2)會有其他難解的問題

建議最好關閉盡量多的應用和服務后再導出

 

二. 制作鏡像

1.使用Dockerfile

From scratch

ADD img.tar /

然后執行docker build .  即可

 

2.使用docker import 導入

cat img.tar | docker import - new_image_name


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM