一、為什麼要使用Docker?
理由很簡單,用了的人都說好用。在多系統的分布式項目中,往往傳統的部署發包等操作,那是讓每個上線的程式員恨的牙癢呀。通常都是通宵奮戰,上生産解決各種部署發包問題。
個人簡單總結一下三點:
1.部署簡單且靈活,有獨立的運作環境,避免了不必要的沖突。
2.節省了資源開銷
3.類似于java, 打包一次各處部署運作。項目遷移靈活便捷。
二、什麼是docker呢?
在講之前,先來說說什麼時容器?什麼時虛拟機?
看下圖:

簡單解釋一下,圖左為容器,圖右為虛拟機。
Docker 屬于 Linux 容器的一種封裝,提供簡單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。
兩圖比較,我們可以看到在容器中是由docker配置設定給項目獨立的虛拟資源,項目運作是與底層系統隔離開來的。但虛拟機中可以看到項目運作是直接配置設定資源與底層系統互動。顯然,如果App2不工作了,對于容器來說系統資源會運用在App1和3上。而對于VM,由于資源已經配置設定出去,是以就會出現使用率不高情況。
差別:
特性 | 容器 | 虛拟機 |
---|---|---|
啟動 | 秒級 | 分鐘級 |
硬碟使用 | 一般為MB | 一般為GB |
性能 | 接近原生 | 弱于 |
系統支援量 | 單機支援上千個容器 | 一般是幾十個 |
docker架構圖:
解釋:
Client:
docker client: 用戶端提供操作指令給使用者,用以連接配接服務端操作docker。
docker Machine:是一個簡化Docker安裝的指令行工具,通過一個簡單的指令行即可在相應的平台上安裝Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。
Hosts:
container:一個獨立運作的容器,每個容器之間沒半毛錢關系,也不影響對方。
registers:
image:是一個鏡像檔案,host主機從遠端倉庫拉去image鏡像後,可以建立container容器,然後執行運作容器。
簡單來講,docker先安裝到本機後,通過docker用戶端操作指令,拉去遠端docker倉庫中已經打包好的項目鏡像檔案到本地。然後通過指令操作鏡像建立容器,最後啟動容器完成部署。
詳細關于鏡像的問題可以參考_:_
Docker _鏡像_基本操作 - 容器_鏡像_服務三、安裝docker
說了這麼多,不如安裝後實際操作一把,就什麼都知道啦~
安裝環境:
centos7
安裝指令:
yum install docker
設定開機自動啟動:
service docker start
檢視版本:
docker version
修改docker倉庫位址:
指令:
vi /etc/docker/daemon.json
内容:
{ “registry-mirrors”: “
https://registry.docker-cn.com”, “live-restore”: true }
四、簡單的實踐-部署ActiveMq
1.拉取mq鏡像
指令:docker pull rabbitmq:management
2.運作啟動
指令:docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
3.通路管理界面的位址
就是
http://[主控端IP]:15672,可以使用預設的賬戶登入,使用者名和密碼都guest
五、Docker操作指令
$ docker ps // 檢視所有正在運作容器
$ docker stop containerId // containerId 是容器的ID
$ docker ps -a // 檢視所有容器
$ docker ps -a -q // 檢視所有容器ID
$ docker stop (docker ps -a -q) // stop停止所有容器 docker rm $(docker ps -a -q) // remove删除所有容器