簡介:
??Docker是一個軟件容器平臺鞋邑。容器可以在共享的操作系統(tǒng)上運(yùn)行隔離的應(yīng)用環(huán)境。與VM不同察藐,容器不捆綁完整的操作系統(tǒng)埂息,而是共享宿主機(jī)的系統(tǒng)內(nèi)核和資源技潘,只需提供應(yīng)用軟件工作時(shí)所需的庫和配置。這使得docker可以做到高效千康,輕便享幽,自包含的系統(tǒng),并且應(yīng)用將始終運(yùn)行相同吧秕,無論它在哪里部署琉闪。
??開發(fā)人員使可以用Docker來消除相互之間代碼協(xié)作時(shí)的“works on my machine”問題。運(yùn)營商可以使用Docker在隔離的容器中并行運(yùn)行和管理應(yīng)用程序砸彬,以獲得更好的計(jì)算密度颠毙。企業(yè)可以使用Docker構(gòu)建靈活的軟件傳輸管道斯入,可以更快,更安全地發(fā)布新功能蛀蜜。
??Docker底層基于Linux內(nèi)核 2.4.19 版本開始包含的NameSpace機(jī)制刻两,NameSpace是一種內(nèi)核級別環(huán)境隔離機(jī)制。Docker底層使用libcontainer進(jìn)行容器管理滴某,使用pivot_root切換進(jìn)程的根目錄磅摹。
??在Docker之前還有一種基于NameSpace的虛擬化工具LXC,LXC通過Cgroups進(jìn)行資源管理霎奢,使用chroot進(jìn)行根目錄的切換户誓。其實(shí)早期Docker是在lxc上面封裝了一層并加入了aufs(Union File System)功能,在Docker 0.9.0 版本才引入了libcontainer 替代LXC進(jìn)行底層容器管理幕侠。
官網(wǎng):https://www.docker.com/
容器虛擬化和主機(jī)虛擬化對比
docker 的基本工作流程
Docker應(yīng)用場景:
web應(yīng)用的自動化打包和發(fā)布帝美;
自動化測試和持續(xù)集成、發(fā)布晤硕;
在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫或其他的后臺應(yīng)用悼潭;
從頭編譯或者擴(kuò)展現(xiàn)有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環(huán)境。
安裝
實(shí)驗(yàn)主機(jī)系統(tǒng)平臺:CentOS 7.4
docker從2017年開始提供兩個版本舞箍,收費(fèi)的商業(yè)版本Docker EE和免費(fèi)的社區(qū)版本Docker CE(moby)舰褪。
可以訪問下面的鏈接獲取docker相關(guān)版本的安裝說明:
https://store.docker.com/search?offering=community&q=&type=edition
Docker官方的安裝腳本
curl -fsSL get.docker.com -o get-docker.sh
bash get-docker.sh
也可以使用Linux系統(tǒng)的包管理器進(jìn)行安裝,本文使用centos 提供的docker版本疏橄,在extras倉庫中提供了docker 1.12.6的安裝包占拍。這個版本較老是在docker商業(yè)化之前的版本。
[root@localhost ~]# yum -y install docker #安裝docker捎迫,需要確保extras倉庫已開啟刷喜。
[root@localhost ~]# docker -v #查看當(dāng)前的docker版本。
Docker version 1.12.6, build c4618fb/1.12.6
[root@localhost ~]# systemctl start docker #啟動
docker文件
/etc/docker/daemon.json
/etc/sysconfig/docker-network 啟動配置文件
/etc/sysconfig/docker-storage 啟動配置文件
/etc/sysconfig/docker-storage-setup 啟動配置文件
/usr/bin/docker-containerd-current
/usr/bin/docker-containerd-shim-current
/usr/bin/docker-ctr-current
/usr/bin/docker-storage-setup
/usr/bin/dockerd-current #docker主程序
/usr/lib/systemd/system/docker-cleanup.service
/usr/lib/systemd/system/docker-cleanup.timer
/usr/lib/systemd/system/docker-storage-setup.service
/usr/lib/systemd/system/docker.service
/usr/lib/udev/rules.d/80-docker.rules
/usr/libexec/docker/docker-proxy-current
/usr/libexec/docker/docker-runc-current
下載鏡像
docker的官方鏡像站:Docker Hub
在主機(jī)上下載鏡像立砸,如果下載時(shí)不寫標(biāo)簽名默認(rèn)下載latest版本
[root@localhost ~]# docker pull centos
Using default tag: latest
Trying to pull repository docker.io/library/centos ...
latest: Pulling from docker.io/library/centos
d9aaf4d82f24: Pull complete
Digest: sha256:eba772bac22c86d7d6e72421b4700c3f894ab6e35475a34014ff8de74c10872e