1、關于Docker
1.1、什么是Docker
Docker概念就是大概了解一下就可以,還是引用一下百度百科吧:
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的Linux機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何接口。
一個完整的Docker有以下幾個部分組成:
dockerClient客戶端
Docker Daemon守護進程
Docker Image鏡像
DockerContainer容器 [2]
1.2、為什么要使用Docker
作為一種新興的虛擬化方式,Docker跟傳統的虛擬化方式相比具有眾多的優勢。
更高效的利用系統資源
由于容器不需要進行硬件虛擬及運行完整操作系統等額外開銷,Docker對系統資源的利用率更高。無論是應用執行速度、內存損耗或者文件存儲速度,都要比傳統的虛擬機技術更高效。因此,相比虛擬機技術,一個相同配置的主機,往往可以運行更多數量的應用。
更快速的啟動時間
傳統的虛擬機技術啟動應用服務往往需要數分鐘,而Docker容器應用,由于直接運行與宿主內核,無需啟動完整的操作系統,因此可以做到秒級、甚至毫秒級別的啟動時間。大大的節約了開發、測試、部署的時間。
一致的運行環境
開發過程中一個常見的問題是環境一致性問題。由于開發環境、測試環境、生產環境不一致,導致有些BUG并未在開發過程中被發現。而Docker的鏡像提供了除了內核外完整的運行時環境,確保了應用運行環境得一致性,從而不會再出現“這段代碼在我機器上沒問題”這類問題。
持續交付和部署
對開發和運維人員來說,最希望的就是一次性創建或配置,可以在任意地方正常運行。
使用Docker可以通過定制應用鏡像來實現持續集成、持續交付、部署。開發人員可以通過DockerFile來進行鏡像構建,并結合 持續集成系統進行集成測試,而運維人員則可以直接在生產環境中快速部署該鏡像,甚至結合持續部署系統進行自動部署。
而使用DockerFile使鏡像構建透明化,不僅僅開發團隊可以理解應用運行環境,也方便運維團隊理解應用運行所需條件,幫助更好的生產環境中部署該鏡像。
更輕松的遷移
由于Docker確保了執行環境得一致性,使得應用的遷移更加容易。Docker可以在很多平臺上運行,無論是物理機、虛擬機、公有云、私有云,甚至是筆記本,其運行結果是一致的。因此用戶可以很輕易的將在一個平臺上運行的應用遷移到另一個平臺,而不用擔心運行環境得變化導致應用無法正常運行的情況。
更輕松的維護和擴展
Docker使應用的分層存儲以及鏡像的技術,使得應用重復部分的復用更為容易,也使得應用的維護更新更加簡單,基于基礎鏡像進一步擴展鏡像也變的非常簡單。此外,Docker團隊同各個開源項目團隊一起維護了一大批高質量的官方鏡像,既可以直接在生產環境使用,又可以作為基礎進一步定制,大大的降低了應用服務的鏡像制作成本。
摘自《Docker從入門到實踐》。
1.3、Docker版本分類
Docker分為CE版本和EE版本,區別如下:
Docker社區版(CE):為了開發人員或小團隊創建基于容器的應用,與團隊成員分享和自動化的開發管道。docker-ce提供了簡單的安裝和快速的安裝,以便可以立即開始開發。docker-ce集成和優化,基礎設施。(免費)
Docker企業版(EE):專為企業的發展和IT團隊建立誰。docker-ee為企業提供最安全的容器平臺,以應用為中心的平臺。(付費)
我們使用CE版本即可,即Docker-CE。
Docker-CE有windows版本,我也安裝過,但是有太多莫名其妙的問題,確實無法使用,所以就嘗試在虛擬機的CentOS里使用Docker-CE,效果非常棒,這也就是我前面會花那么多篇幅來寫Windows下安裝CentOS的原因。這樣初學者不用再翻各種資料來進行嘗試,確保一氣呵成。哈哈!
2、安裝Docker-CE(請先按步驟體驗一下安裝過程,文章末尾會追加自動化安裝腳本)
docker安裝的有些步驟我也不是很明白,從網上查到相關知識,通過實戰安裝發現可行,就OK了。
2.1、Docker版本檢查
docker要求CentOS 系統的內核版本高于 3.10 ,安裝之前首先要驗證你的CentOS 版本是否支持 Docker 。
通過uname -r 命令查看你當前的內核版本(建議使用xshell連接虛擬機進行命令操作):
$ uname -r
CentOS內核版本沒有問題
2.2、更新系統
使用root 權限登錄 CentOS。確保 yum 包更新到最新。
$ yum -y update
2.3、卸載舊版本(如果安裝過就版本的話)
$ yum remove docker docker-common docker-selinux docker-engine
如果安裝過舊版本,就會卸載當前版本;如果沒安裝過,運行上面的命令也沒關系,只是提示未安裝
比較干凈,沒有需要刪除的歷史docker。
2.4、安裝需要的軟件包
yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
$ yum install -y yum-utils device-mapper-persistent-data lvm2
2.5、設置yum源,清華鏡像倉庫,速度很快
yum -y install wget #如果沒有安裝wget則安裝,如已安裝則會跳過
根據你的發行版下載repo文件:
$ wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
把軟件倉庫地址替換為 TUNA:
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
2.6、安裝docker
$ yum makecache fast # 清緩存
$ yum install docker-ce # 安裝docker-ce
2.7、啟動并加入開機啟動
$ systemctl start docker
$ systemctl enable docker
2.8、驗證安裝是否成功
如果有client和service兩部分,則表示docker安裝啟動都成功了
$ docker version
3、安裝Docker Compose
以前使用 Docker 的時候,需要定義 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服務架構的應用系統一般包含若干個微服務,每個微服務一般都會部署多個實例,如果每個微服務都要手動啟停,那么效率之低,維護量之大可想而知。
使用 Docker Compose 可以輕松、高效地管理容器,他是一個用于定義和運行多容器Docker的應用程序工具。
3.1、運行命令下載 docker compose
從國內鏡像 get.daocloud.io 快速下載:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
3.2、給執行文件添加執行權限
chmod +x /usr/local/bin/docker-compose
3.3、輸入命令測試
docker-compose --version
返回:
docker-compose version 1.22.0, build f46880fe
docker compose 安裝成功!
3.4、配置docker國內鏡像
為了確保docker能快速加載應用程序鏡像,配置鏡像列表,指向國內的鏡像地址。
修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 鍵值。
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
修改保存后重啟 Docker 以使配置生效。
systemctl restart docker
至此,docker環境安裝完畢!
4、自動化安裝的腳本(后續我的項目都會編制相應的腳本,便于安裝和維護)
體驗過整個安裝過程后,是不是覺得有些麻煩?是的,命令行模式一步步執行確實很啰嗦,還不好記。所以,我為大家準備了全自動化的安裝腳本,并已經上傳到了github,請到github拉取試用!github地址為:https://github.com/tanbushi/install-docker
拉取文件后,可以將 install-docker.sh 上傳到虛擬機CentOS的任意目錄里,或者將 install-docker.sh 拷入上一篇文章所建立和映射的共享文件夾下(文章里的示例路徑為:F:\dockers),文章請參考:Docker搭建LNMP環境實戰(四):安裝VMware Tools共享文件夾;在虛擬機CentOS里的 /mnt/hgfs/dockers 里訪問到 install-docker.sh。
給腳本 install-docker.sh 增加可執行權限
$ chmod +x install-docker.sh
執行 install-docker.sh 腳本文件
$ ./install-docker.sh
即可自動完成 docker 及 docker-compose 的安裝!Good Lucky!
5、自動化卸載docker的腳本
在github地址為:https://github.com/tanbushi/install-docker的項目里有個uninstall_docker.sh,可以和install.sh進行類似處理
執行 install-docker.sh 腳本文件
$ ./uninstall-docker.sh
即可自動完成 docker 的卸載!
docker鏡像操作
https://blog.csdn.net/wangmx1993328/article/details/81708850
docker容器操作
https://blog.csdn.net/wangmx1993328/article/details/81735070
docker實踐---安裝mysql
https://blog.csdn.net/wangmx1993328/article/details/81805371
使用dockerfile部署javaweb項目
http://www.lxweimin.com/p/ab0de243736a
docker compose部署mysql
https://blog.csdn.net/hjxzb/article/details/84927567