Docker介绍与安装使用(一)
什么是Docker?
docker是一個基于LXC容器技術的管理工具,提供一系列更強的功能,如可移植性(定義了標準,可以在任意主機運行)、自動化構建(dockerfile)、版本控制、鏡像管理等。
docker提供應用程序的自動化部署解決方案,能夠迅速創建一個容器,并在容器上部署和運行應用程序,通過配置文件(Dockerfile)可以輕松實現應用程序的自動化安裝、部署和升級。
Docker優點?
1.輕量級資源,容器是在進程級別隔離,并使用宿主機的內核,而不需要虛擬化整個操作系統。不需要虛擬化和系統調用復雜的操作。因此節省了很大的額外開銷。不需要額外的hypervisor(虛擬化技術)支持,不需要虛擬硬件,不需要額外完整的系統。
2.可移植性,所需要的應用都在容器中,可以在任意一臺docker主機上運行
3.可預測性,宿主機和容器相互不關心對方都運行什么。只考慮所需的接口標準化。
相關組件及功能?
1.lxc,Linux Container的簡寫,lxc是一種內核虛擬化技術,與宿主機共享內核,用namespace和cgroup實現資源隔離。lxc是linux內核一個特性,它允許進程或進程組運行在一塊獨立的空間,并能對其控制。并實現容器與宿主機資源共享。
2.cgroup,lxc是cgroup的管理工具。限制進程或進程組使用的系統資源管理。提供類似文件的接口,非常方便配置。
3.namespace,cgroup是namespace的用戶空間的管理接口。并對進程或進程組之間隔離,如果net、mnt、pid、user等。
4.aufs(AnotherUnionFS),支持將不同目錄掛載到同一個虛擬文件系統。docker容器分為只讀的鏡像層與上面可寫層,AUFS實現在可寫層上進行增量的修改(增量文件系統)。
在docker中,只讀層及在頂部的讀寫層的組合被稱為Union File System,UFS(聯合文件系統),目前支持的聯合文件系統種類包括 AUFS、btrfs、vfs和DeviceMapper。
5.chroot,使容器運行在指定的目錄內。
組件之間關系?
cgroup是在底層實現資源管理,lxc在cgroup上封裝了一層,docker又在lxc封裝了一層。
工作方式?
當我們啟動一個docker容器時,docker會加載只讀鏡像,并在其上添加一個讀寫層(將鏡像目錄復制一份到/var/lib/docker/aufs/mnt以ID為目錄下,我們可以使用chroot進入此目錄,與容器里面的目錄一樣)。如果運行中的容器修改現有的一個已經存在的文件,那該文件將會從讀寫層下面的只讀層復制到讀寫層,該文件的只讀版本仍然存在,只是已經被讀寫層中的該文件的副本所隱藏,當刪除docker容器,并通過該鏡像重新啟動時,之前的更改將會丟失。
博客地址:http://lizhenliang.blog.51cto.com
Docker安裝與使用:
操作系統:Ubuntu14.04_x64
1、添加秘鑰
$ sudo apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys?58118E89F3A912897C070ADBF76221572C52609D
2、添加docker源
$ sudo vi /etc/apt/sources.list.d/docker.list
# Ubuntu?Precise?
deb https://apt.dockerproject.org/repo ubuntu-precise main?
# Ubuntu?Trusty?
deb https://apt.dockerproject.org/repo ubuntu-trusty main?
# Ubuntu?Vivid?
deb https://apt.dockerproject.org/repo ubuntu-vivid main?
# Ubuntu?Wily?
deb https://apt.dockerproject.org/repo ubuntu-wily main
注意:通過命令lsb_release?-c查看上面對應的版本,不要都添加上
3、更新索引
$ sudo apt-get update
4、安裝docker
$ sudo apt-get install docker-engine
5、下載Ubuntu鏡像
#默認下載最新版
$ sudo docker?pull?ubuntu
#如果想下載14.04版本的,可以這樣指定
$ sudo docker pull ubuntu:14.04
6、在鏡像里打印hello
$ sudo docker?run?ubuntu?/bin/echo?hello
打印出hello說明你已經成功安裝docker并啟動一個容器!
7、熟悉下常用命令
#查看docker環境信息
$ sudo docker version
# sudo docker -D info
#在倉庫中搜索相關的鏡像
$?sudo?docker?search?centos
#查看已下載的鏡像
$?sudo?docker?images
#啟動鏡像并進入容器
$?sudo?docker?run?-itd --name=ubuntu ubuntu
run命令選項:
-t 模擬一個終端,-i進入這個容器,一般結合使用創建一個交互式容器。
-d?后臺運行容器并打印ID,如果不加-i后面就不能附加進入容器
--name 為容器指定名稱
run命令選項很多,先不過多介紹,在使用中你會慢慢了解到!
此時你已經創建并進入容器,怎么能退出呢?
# 按ctrl+d退出容器,會暫停容器,可以再啟動(sudo docker start ID/NAME),里面數據不會丟失。
# 退出暫停容器太不符合常理啊!那么按ctrl+p+q退出docker,將不會暫停
#緊接查看運行的容器
$?sudo?docker?ps
#這時想進入某個容器可通過ps查看的ID進入運行的容器
$?sudo?docker?attach?ID/NAME
#關閉運行的容器(start/restart)
$?sudo?docker?stop ID
#關閉所有運行的容器
$ sudo docker kill $(sudo?docker?ps?-q) ? #-q只顯示ID
#刪除一個容器
$ sudo docker rm ID/NAME
#刪除所有容器
$ sudo docker rm?$(sudo?docker?ps?-q)
#刪除一個鏡像
$ sudo docker rmi ID
#查看Docker操作日志
$ sudo docker ps -a
#查看容器日志
$ sudo docker logs ID/NAME ?
#查看容器配置詳細信息
$ sudo?docker?inspect ID
此時,會返回一個json格式信息,我們可以獲取指定的信息,比如獲取IP地址:
$ sudo?docker?inspect?-f?'{{.NetworkSettings.IPAddress}}'?ID
#列出容器內容文件狀態變化情況
$ sudo docker diff ID
注:A - Add,D - Delet , C - Change
#查看容器資源使用情況
$ sudo docker?stats
#免交互執行命令
$ sudo docker exec ID/NAME command
通過這篇博文,你已經對docker初步認識,可以很輕松的來管理容器了!
后續緊接會更新docker進階內容,歡迎關注,謝謝支持!
總結
以上是生活随笔為你收集整理的Docker介绍与安装使用(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring MVC笔记 添加错误页面
- 下一篇: [CareerCup] 18.9 Fin