作者:潘吉祥
爲什麼學習docker
近年來微服務架構真的是非常流行了,作爲開發者,即時你沒有做過微服務,但肯定談論過它或者聽別人談論過它。那麼我們的docker和微服務之間究竟有着什麼聯繫呢?
衆所周知,微服務架構強調的是服務拆分,把一個大的系統拆分成多個小的系統,每個小系統提供的服務相互協作組成原來完整的大系統,然後就可以在每個小系統的基礎上進行橫向擴展,也就是集羣,以此提高系統的服務能力,本質上就是分而治之的理念。
關鍵點來了,開發人員負責開發每個小系統,運維人員負責部署擴展,事實上這通常不是件一帆風順的轉交過程,會發生各種意想不到的情況。敲黑板,docker就可以成爲解決這種情況的利器。
docker的實質就是一種容器虛擬化技術,使用docker可以把開發者開發的小系統制成鏡像,丟給運維人員,運維人員只需要在機器上安裝docker就可以運行這個鏡像,如果橫向擴展,可以運行多個鏡像,一切OK!
如此一來,開發者只需要關心繫統邏輯的開發,運維只需要管理鏡像的運行!由此看來,使用docker可以大大縮短代碼從開發、測試到部署、上線運行的週期,而且讓代碼具備超強的移植性,只要跑服務的機器上安裝docker即可。此外,docker鼓勵單個容器運行單個應用服務,服務於服務之間就表現爲多個容器的互聯,進行這對於構建微服務架構是非常有利的。
說了這麼多,接下來就來學習這個神奇的碼頭工吧!(docker原義爲碼頭工人,搬運工,這與docker的工作設計理念是一致的)
docker安裝
作爲入門教程,安裝必不可少,因爲現在的不少教程是存在些遺漏的,直接用安裝好的docker,以至於初學者在軟件環境上遇到不少難題(說實話,這也是我遇到過的,着實很坑)
這裏我使用的虛擬鏡像是centOS7,注意如果使用centOS6版本的話內核對於docker的一些操作是不完全支持的;軟件是virtueBox,本人以前最先使用的是VMware,但是有時候會出現服務自動掛掉的情況,後來換了virtueBox,就一直在使用這個了,也向大家推薦一下。
以下操作爲本人親自操作,放心實戰!
使用root角色登錄centOS
1.首先建議大家關掉防火牆
systemctl disable firewalld 開機禁止啓動
2.更新yum包
yum update
3.安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴
yum install -y yum-utils device-mapper-persistent-data lvm2
4.設置docker軟件安裝包的下載yum源爲阿里雲(注意理解:不是docker下載鏡像的源)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5.接下來就可以安裝啦(如果不設置第四步,這裏的下載會很慢,我這裏已經6M/s了)
yum install docker-ce
6.安裝成功之後我們可以查看當前的docker版本
docker –v
7.設置docker獲取鏡像的加速源,這個很重要,默認的國外源幾乎是無法使用的(通過docker我們可以拉取網上已經有的各種鏡像如redis,nginx等,就像設置maven的pom源)這裏我們選擇了阿里雲的加速地址:
https://bjtzu1jb.mirror.aliyuncs.com
創建docker鏡像加速配置:
vi -p /etc/docker/daemon.json
在文件中添加如下內容
{
"registry-mirrors":["https://bjtzu1jb.mirror.aliyuncs.com"]
}
保存退出,到此docker的安裝已經完畢了。
docker使用
1.啓動docker
systemctlstart docker
此時我們可以查看docker的信息
docker info
可以看到我們上面的配置已經生效了。
停止、重啓、和開機啓動:
systemctl stop/restart/enable docker
docker常用命令
1.搜索鏡像(下載的鏡像通過一條簡單的命令創建容器就可以直接運行)
docker search 鏡像名
例如我們搜索redis的鏡像:docker search redis
參數:
NAME:鏡像的倉庫名
DESCRIPTION:鏡像描述
STARS:用戶評價,即用戶歡迎程度
OFFICIAL:是否官方
2.下載(拉取)鏡像
docker pull 鏡像名:版本
例如:docker pull nginx 如果不加版本默認會爲我們下載latest版本
3.查看鏡像
docker images
可以看到我們剛纔下載的鏡像,這些鏡像都是存儲在Docker宿主機的/var/lib/docker目錄下,參數意義:
REPOSITORY:鏡像名稱
TAG:鏡像標籤
IMAGE ID:鏡像ID
CREATED:鏡像的創建日期(不是獲取該鏡像的日期)
SIZE:鏡像大小
需要注意的是根據鏡像id可以確定唯一一個鏡像,而鏡像名+標籤才能確定唯一一個鏡像。
4.刪除鏡像
docker rmi 鏡像id (我們通常地使用id來刪除或者運行指定的鏡像。)
關於容器(鏡像)的運行、創建我們放在下一篇,關注不迷路哦!
END
【推薦閱讀】
Dubbo爆出嚴重漏洞!可導致網站被控制、數據泄露!附解決方案
終於放棄了單調的swagger-ui了,選擇了這款神器—knife4j
正在家裏愉快辦公,突然被通知公司倒閉,員工:沒想到來得這麼快
感謝閱讀,請掃碼關注
明天見