一、為什麼要使用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刪除所有容器