- 目前常見虛擬化技術類型(Virtualization Types)
- PV(paravirtualization), 透過修改OS核心,植入Hypercall,讓原本無法被虛擬化的指令,可以經過 Hyper interface 直接向硬體提出請求
http://en.wikipedia.org/wiki/Paravirtualization - HVM(hardware virtual machine)
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html - Application level virtualization - JVM, CLR
- OS level virtualization - docker
- PV(paravirtualization), 透過修改OS核心,植入Hypercall,讓原本無法被虛擬化的指令,可以經過 Hyper interface 直接向硬體提出請求
- Hypervisor 有兩種類型
- Type 1 (Bare-Metal hypervisor) - 又稱為 Native VM, hypervisor 直接安裝於機器上,直接掌控硬體資源,硬碟無須事先安裝OS,例如 VMware ESXi, 在 Xen 第一個建立 domain 稱之為 Dom0 它可以管理並且針對硬體做設定,還可以建立 DomU
- Type 2 (Hosted hypervisor)- 又稱為 Hosted VM,須先安裝 OS 才可使用,例如 VMware Player
- docker 優點
- 輕量級虛擬化:啟動 Container 速度快,Container 重新啟動後,回復原本乾淨的環境
- 自動建構:使用 Dockerfile 可自動建構環境
- 版本控制
- Docker hub
- docker 安裝 - Ubuntu 14.04, 可參考 http://docs.docker.com/installation/ubuntulinux/
$ sudo apt-get update $ sudo apt-get install docker.io $ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker $ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io
-
docker 指令
$ sudo docker pull centos (取得 image) $ sudo docker images (安裝的 image 列表) $ sudo docker run centos yum install redhat-lsb -y (安裝 redhat-lsb) $ sudo docker commit containerID newImgName (commit 成新的 image) $ sudo docker run newImgName lsb_release -d (顯示 linux 版本) $ sudo docker run ubuntu ifconfig (顯示 ip) $ sudo docker run -i -t ubuntu /bin/bash (互動模式) $ sudo docker ps (顯示正在 run 的 process) $ sudo docker ps -l <-- last $ sudo docker ps -a -s (-a makes sure you see already closed containers,-s gives you the container file size as well) $ sudo docker run -p 9999:8080 imgName command (port forwarding,前面是實體 linux 的 port,後面為 container 的 port) $ sudo docker run -d -p 9999:8080 imgName command (Daemonize) $ sudo docker run -d -p 27017:27017 -p 28017:28017 -v /path/to/data/db/:/data/db myhubpath/mongodb (mounts the current working directory into the container) $ sudo docker kill containerID (kill 正在 run 的 process)
- Dockerfile
$ sudo docker build –t imgName .
Docker
Docker 是一個開源的軟體容器(software containers), 利用 Linux kernel 中的隔離(isolation)特性, 實現了OS level virtualization
0 comments:
Post a Comment