Docker 是一種開源的容器化平臺,能夠讓開發(fā)者在不同環(huán)境中運(yùn)行應(yīng)用程序,并保證應(yīng)用程序的一致性、可移植性和可構(gòu)建性。而 KVM 是一種開源的虛擬化技術(shù),能夠使在一個主機(jī)上運(yùn)行多個虛擬機(jī),在每個虛擬機(jī)上運(yùn)行不同的操作系統(tǒng)和應(yīng)用程序,從而實(shí)現(xiàn)資源隔離和多租戶的目的。在 Docker 中運(yùn)行 KVM 能夠讓用戶享受到容器化和虛擬化的優(yōu)勢。
# 運(yùn)行 KVM 容器 首先需要安裝 Docker。 然后創(chuàng)建一個新的容器: $ docker run --privileged --rm --device /dev/kvm --name kvm-container kvm 這個命令會在 Docker 中創(chuàng)建一個新的容器,名稱為 kvm-container,容器運(yùn)行時擁有特權(quán),可以訪問主機(jī)上的 /dev/kvm 設(shè)備。 使用 virt-manager 遠(yuǎn)程連接到新的容器,在容器中使用 virt-install 創(chuàng)建一個新的虛擬機(jī),然后使用 virt-viewer 連接到虛擬機(jī)。 # 示例 下面是一個示例,用于在 Docker 容器中運(yùn)行一個基于 CentOS 的虛擬機(jī)。 # 創(chuàng)建新的容器 $ docker run --privileged --rm --device /dev/kvm --name kvm-container -itd centos /bin/bash # 使用 virt-install 創(chuàng)建虛擬機(jī) $ virt-install --connect qemu:///system --name testvm --ram 2048 --vcpus=2 --disk path=/var/lib/libvirt/images/testvm.qcow2,size=20 --network bridge=virbr0 --os-type=linux --os-variant=rhel7 --location=http://mirror.centos.org/centos/7/os/x86_64/ --initrd-inject=/root/ks.cfg --extra-args "ks=file:/ks.cfg console=tty0 console=ttyS0,115200" --noreboot --graphics vnc,port=5900,listen=0.0.0.0 其中,--privileged 參數(shù)表示容器要有特權(quán),--device 參數(shù)表示容器要訪問主機(jī)上的 /dev/kvm 設(shè)備,-itd 表示以交互模式運(yùn)行容器。 如果需要從主機(jī)上訪問虛擬機(jī),需要先將虛擬機(jī)的 VNC 端口映射到主機(jī)上,例如: $ docker container port kvm-container 5900/tcp 0.0.0.0:32769 然后使用 VNC 客戶端連接到主機(jī)上的 32769 端口,即可接入虛擬機(jī)了。 在 Docker 中運(yùn)行 KVM,既能夠讓應(yīng)用程序具有強(qiáng)大的隔離和可移植性,又能夠在同一臺機(jī)器上利用更多的資源來運(yùn)行多個虛擬機(jī)。但是也需要注意容器和主機(jī)之間的安全問題,以及虛擬機(jī)的性能問題。
上一篇mysql儲存表名的表
下一篇hive 輸出 json