1. 什么是docker
在Docker之前踪危,我們肯定要先了解Docker是什么圃验。官網(wǎng)的介紹是“Docker is the world’s leading software container platform.”官方給Docker的定位是一個應(yīng)用容器平臺尿孔。至于為什么要做這個Docker蒋情,官網(wǎng)上還有這么一句話"Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications, whether on laptops, data center VMs, or the cloud."這句話用一句非常簡單的話去概括就是"Build once,Run anyWhere".這一點跟Java很像眷茁。那么它這樣做是要解決現(xiàn)實中什么問題,我列舉幾個情況。
1. 合作開發(fā)的時候痴怨,在本機(jī)可以跑忙干,別人的電腦跑不起來
這里我們拿java Web應(yīng)用程序舉例,我們一個java Web應(yīng)用程序涉及很多東西浪藻,比如jdk捐迫、tomcat、spring等等爱葵。當(dāng)這些其中某一項版本不一致的時候施戴,可能就會導(dǎo)致應(yīng)用程序跑不起來這種情況。Docker則將程序直接打包成鏡像钧惧,直接運行在容器中即可暇韧。
2. 服務(wù)器自己的程序掛了,結(jié)果發(fā)現(xiàn)是別人程序出了問題把內(nèi)存吃完了浓瞪,自己程序因為內(nèi)存不夠就掛了
這種也是一種比較常見的情況,如果你的程序重要性不是特別高的話巧婶,公司基本上不可能讓你的程序獨享一臺服務(wù)器的乾颁,這時候你的服務(wù)器就會跟公司其他人的程序共享一臺服務(wù)器涂乌,所以不可避免地就會受到其他程序的干擾,導(dǎo)致自己的程序出現(xiàn)問題英岭。Docker就很好解決了環(huán)境隔離的問題湾盒,別人程序不會影響到自己的程序。
3. 公司要弄一個活動诅妹,可能會有大量的流量進(jìn)來罚勾,公司需要再多部署幾十臺服務(wù)器
在沒有Docker的情況下,要在幾天內(nèi)部署幾十臺服務(wù)器吭狡,這對運維來說是一件非常折磨人的事尖殃,而且每臺服務(wù)器的環(huán)境還不一定一樣,就會出現(xiàn)各種問題划煮,最后部署地頭皮發(fā)麻送丰。用Docker的話,我只需要將程序打包到鏡像弛秋,你要多少臺服務(wù)器躏,我就給力跑多少容器,極大地提高了部署效率蟹略。
2. docker常用命令
// 從Docker Hub上拉取鏡像
docker pull chaimm/tomcat1.1
// docker pull是從從Docker Hub上拉取鏡像的命令
// 后面的chaimm/tomcat是鏡像的名稱登失,:1.1是鏡像的版本號。
// 創(chuàng)建容器
docker run --name zrz -p 8082:8080 -v /usr/web/gaoxi-log:/opt/tomcat/gaoxi-log chaimm/tomcat:1.1
// --name:指定容器的名字
// -p:指定容器的端口映射 -p 8082:8080 表示將容器的8080端口映射到宿 主機(jī)的8082端口上
// -v:指定容器數(shù)據(jù)卷的映射 xxx:yyy 表示將容器yyy目錄映射到宿主機(jī)的xxx目錄上挖炬,從而訪問宿主機(jī)的xxx目錄就相當(dāng)于訪問容器的yyy目錄揽浙。
// chaimm/tomcat:1.1:表示容器所對應(yīng)的鏡像。
// 查看容器
docker ps -A
// 啟動容器
docker start id號
// 關(guān)閉容器
docker stop id/name
// 重啟容器
docker restart id號
// 進(jìn)入容器
sudo docker exec -it id號 /bin/bash