簡介
如官方文檔所說,docker是一個自動將應用打包成輕量可移植自包涵的容器的引擎。開發者構建的應用可以一次構建全平臺運行,包括本地開發機,生產環境,虛擬機和云等。目前處于開發階段,不可用于生產環境。在你啟動一條命令時docker會調用lcx等其他一個組建為這條命令構建一個container,包含了進程運行的所有資源。但是官方文檔以說明,docker處于開發階段目前還不能用于生產環境。
特性
Go語言編寫
基于lxc的進程級隔離,而lxc基于cgroup,輕量級
通過cgroup做到文件系統,網絡和資源的隔離
使用aufs文件系統存儲,寫時復制,相同數據只保存一份,節省空間
源機制,可相互分享,搜索等
概念
cgroups
cgroups全稱control groups,是linux內核提供的一種限制、記錄和隔離進程組所使用物理資源的一種機制。在2.6.24之后的內核中都已經支持cgroups。詳細的介紹請參考cgroups詳解。
lxc
lxc全稱是linux container,是基于cgroups和chroot等內核特性的一組工具,用于構建虛擬環境。通過一系列的命令行工具可以創建,修改,刪除虛擬環境。具體用法可參考ubuntu官方文檔。
aufs
aufs全稱是advance(another) union file system,是一種聯合文件系統。這種文件系統最重要的一個特性就是有一個層的概念和復制時拷貝,可以做到當文件系統改變時只影響其中一層,其他層保持不變。舉個例子,整個文件系統就像由一層一層的玻璃組成的,你從上往下看能看到所有的圖案(如果上下層的玻璃完全重合則只能看見上層的玻璃對應的圖案),而當你需要新增或者修改圖案時就只能在最上層的玻璃上操作。具體的一些操作例子可參考geekstuff的aufs演示
安裝
注意: docker要求內核在3.8以上,所以建議的安裝系統為ubuntu。
ubuntu
curl -s https://get.docker.io/ubuntu/ | sudo sh
centos
安裝epel rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
安裝docker yum install -y docker-io
啟動 service docker start chkconfig docker on
使用
命令行
獲取base image
docker pull ubuntu
這條命令會從docker index上獲取ubuntu鏡像,它是運行其他進程的基礎。
運行命令
docker run -i -t ubuntu yum install -y vim
提交改變
docker imagesdocker commit id user/namedocker push user/name
再次運行
docker pull user/namedocker run -i -t image vim
注意: 這里的再次運行是指你所構建的環境可以再其他任何平臺上運行起來,不需要額外的配置,沒有依賴。
Dockerfile
dockerfile通過一些指令來描述了一個image的方方面面。
# Memcached## VERSION 2.2# use the ubuntu base image provided by dotCloudFROM ubuntuMAINTAINER Victor Coisne victor.coisne@dotcloud.com# make sure the package repository is up to dateRUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.listRUN apt-get update# install memcachedRUN apt-get install -y memcached# Launch memcached when launching the containerENTRYPOINT ["memcached"]# run memcached as the daemon userUSER daemon# expose memcached portEXPOSE 11211
其中的一些指令解釋:
FROM指定此image的base image
MAINTAINER指定image的維護者
RUN指定在當前的image下運行的命令,相當于docker run image command
ENTRYPOINT指定在運行image時觸發的命令
USER指定運行出發命令的用戶名
EXPOSE指定對外提供的端口號
以上就是本文的全部內容了,希望對大家了解docker能夠有所幫助
新聞熱點
疑難解答
圖片精選