Docker入門教程

使用Docker技術(shù)可以幫助企業(yè)快速水平擴展服務(wù),從而到達彈性部署業(yè)務(wù)的能力冒嫡。在云服務(wù)概念興起之后拇勃,Docker的使用場景和范圍進一步發(fā)展,如今在微服務(wù)架構(gòu)越來越流行的情況下孝凌,微服務(wù)+Docker的完美組合方咆,更加方便微服務(wù)架構(gòu)運維部署落地。

什么是Docker

Docker 屬于 Linux 容器的一種封裝蟀架,提供簡單易用的容器使用接口瓣赂。它是目前最流行的 Linux 容器解決方案。Docker 將應(yīng)用程序與該程序的依賴片拍,打包在一個文件里面煌集。運行這個文件,就會生成一個虛擬容器捌省。程序在這個虛擬容器里運行苫纤,就好像在真實的物理機上運行一樣。有了 Docker纲缓,就不用擔(dān)心環(huán)境問題卷拘。

docker的目標

  • 提供簡單輕量的建模方式
  • 職責(zé)的邏輯分離
  • 快速高效的開發(fā)生命周期
  • 鼓勵使用面向服務(wù)的架構(gòu)

docker的使用場景

  • 使用docker容器開發(fā)測試,部署服務(wù)
  • 創(chuàng)建隔離的運行環(huán)境
  • 搭建測試環(huán)境
  • 構(gòu)建多用戶的平臺即服務(wù)(PaaS)基礎(chǔ)設(shè)施
  • 提供軟件即服務(wù)(SaaS)應(yīng)用程序
  • 高性能色徘、超大規(guī)模的宿主機部署

為什么使用Docker

容器的啟動恭金、關(guān)閉操禀、重啟操作耗時一般在1-2秒以內(nèi)褂策,且每個容器除了運行其中應(yīng)用外,基本不消耗額外的系統(tǒng)資源,使得應(yīng)用的性能很高斤寂。傳統(tǒng)虛擬機方式運行 10 個不同的應(yīng)用就要起 10 個虛擬機耿焊,而Docker 只需要啟動 10 個隔離的應(yīng)用即可。

作為一種新興的虛擬化方式遍搞,Docker 跟傳統(tǒng)的虛擬化方式相比具有眾多的優(yōu)勢罗侯。

  • 更高效的利用系統(tǒng)資源

由于容器不需要進行硬件虛擬以及運行完整操作系統(tǒng)等額外開銷,Docker 對系統(tǒng)資源的利用率更高溪猿。無論是應(yīng)用執(zhí)行速度钩杰、內(nèi)存損耗或者文件存儲速度,都要比傳統(tǒng)虛擬機技術(shù)更高效诊县。因此讲弄,相比虛擬機技術(shù),一個相同配置的主機依痊,往往可以運行更多數(shù)量的應(yīng)用避除。

  • 更快速的啟動時間

傳統(tǒng)的虛擬機技術(shù)啟動應(yīng)用服務(wù)往往需要數(shù)分鐘,而 Docker 容器應(yīng)用胸嘁,由于直接運行于宿主內(nèi)核瓶摆,無需啟動完整的操作系統(tǒng),因此可以做到秒級性宏、甚至毫秒級的啟動時間群井。大大的節(jié)約了開發(fā)、測試毫胜、部署的時間蝌借。

  • 一致的運行環(huán)境

開發(fā)過程中一個常見的問題是環(huán)境一致性問題。由于開發(fā)環(huán)境指蚁、測試環(huán)境菩佑、生產(chǎn)環(huán)境不一致,導(dǎo)致有些 bug 并未在開發(fā)過程中被發(fā)現(xiàn)凝化。而 Docker 的鏡像提供了除內(nèi)核外完整的運行時環(huán)境稍坯,確保了應(yīng)用運行環(huán)境一致性,從而不會再出現(xiàn) 「這段代碼在我機器上沒問題啊」 這類問題搓劫。

  • 持續(xù)交付和部署

對開發(fā)和運維人員來說瞧哟,最希望的就是一次創(chuàng)建或配置,可以在任意地方正常運行枪向。

使用 Docker 可以通過定制應(yīng)用鏡像來實現(xiàn)持續(xù)集成勤揩、持續(xù)交付、部署秘蛔。開發(fā)人員可以通過Dockerfile來進行鏡像構(gòu)建陨亡,并結(jié)合 持續(xù)集成(Continuous Integration)系統(tǒng)進行集成測試傍衡,而運維人員則可以直接在生產(chǎn)環(huán)境中快速部署該鏡像,甚至結(jié)合持續(xù)部署系統(tǒng)進行自動部署负蠕。

而且使用 Dockerfile 使鏡像構(gòu)建透明化蛙埂,不僅僅開發(fā)團隊可以理解應(yīng)用運行環(huán)境,也方便運維團隊理解應(yīng)用運行所需條件遮糖,幫助更好的生產(chǎn)環(huán)境中部署該鏡像绣的。

  • 更輕松的遷移

由于 Docker 確保了執(zhí)行環(huán)境的一致性,使得應(yīng)用的遷移更加容易欲账。Docker 可以在很多平臺上運行屡江,無論是物理機、虛擬機赛不、公有云盼理、私有云,甚至是筆記本俄删,其運行結(jié)果是一致的宏怔。因此用戶可以很輕易的將在一個平臺上運行的應(yīng)用,遷移到另一個平臺上畴椰,而不用擔(dān)心運行環(huán)境的變化導(dǎo)致應(yīng)用無法正常運行的情況臊诊。

  • 更輕松的維護和擴展

Docker 使用的分層存儲以及鏡像的技術(shù),使得應(yīng)用重復(fù)部分的復(fù)用更為容易斜脂,也使得應(yīng)用的維護更新更加簡單抓艳,基于基礎(chǔ)鏡像進一步擴展鏡像也變得非常簡單。此外帚戳,Docker 團隊同各個開源項目團隊一起維護了一大批高質(zhì)量的 官方鏡像玷或,既可以直接在生產(chǎn)環(huán)境使用,又可以作為基礎(chǔ)進一步定制片任,大大的降低了應(yīng)用服務(wù)的鏡像制作成本偏友。

Docker容器的能力

  • 文件系統(tǒng)隔離: 每個容器的都有自己的root文件系統(tǒng)
  • 進程隔離: 每個容器都運行在自己的進程環(huán)境中
  • 網(wǎng)絡(luò)隔離: 容器的虛擬網(wǎng)絡(luò)接口和IP地址是分開的
  • 資源隔離和分組:使用Cgroups將CPU和內(nèi)存之類的資源獨立分配給每個Docker容器

對比傳統(tǒng)虛擬機總結(jié)

特性 容器 虛擬機
啟動 秒級 分鐘級
硬盤使用 一般為 MB 一般為 GB
性能 接近原生 弱于
系統(tǒng)支持量 單機支持上千個容器 一般幾十個

Docker安裝

Docker 軟件包已經(jīng)包括在默認的 CentOS-Extras 軟件源里。所以可以使用 yum 命令直接安裝

$ sudo yum install docker

查看Docker是否安裝成功

docker version
或者
docker info

Docker 需要用戶具有 sudo 權(quán)限对供,為了避免每次命令都輸入sudo位他,可以把用戶加入 Docker 用戶組

$ sudo usermod -aG docker 用戶名

安裝完成后啟動 docker 服務(wù),并將其設(shè)置為開機啟動

$ sudo service docker start  
$ sudo chkconfig docker on

CentOS 7中支持的新式 systemd 語法:
啟動 docker:systemctl start docker.service
查看 docker狀態(tài):systemctl status docker.service

使用鏡像

Docker 把應(yīng)用程序及其依賴产场,打包在 image 文件里面鹅髓,通過 image 文件,才能生成 Docker 容器京景。Docker 根據(jù) image 文件生成容器的實例窿冯。同一個 image 文件,可以生成多個同時運行的容器實例确徙。

查看宿主機上的鏡像(Docker鏡像保存在/var/lib/docker目錄下)

docker images

image 文件是通用的醒串,為了方便共享执桌,image 文件制作完成后,可以上傳到Docker 的官方倉庫 Docker Hub

查找Docker Hub上的nginx鏡像

docker search nginx

從Docker hub上下載某個鏡像:

docker pull ubuntu:latest
docker pull ubuntu:latest

執(zhí)行docker pull ubuntu會將Ubuntu這個倉庫下面的所有鏡像下載到本地repository厦凤。

運行 image 文件

docker  run  鏡像名

docker run命令會從 image 文件生成一個正在運行的容器實例鼻吮。docker run命令具有自動抓取 image 文件的功能育苟。如果發(fā)現(xiàn)本地沒有指定的 image 文件较鼓,就會從倉庫自動抓取。

[root@localhost ~]# docker run hello-world 

Hello from Docker!
This message shows that your installation appears to be working correctly.

 ... ...

輸出這段提示以后违柏,hello world就會停止運行博烂,容器自動終止。

刪除鏡像

docker rmi  image-id

操作 Docker 容器

image 文件生成的容器實例漱竖,本身也是一個文件禽篱,稱為容器文件。簡單的說馍惹,容器是獨立運行的一個或一組應(yīng)用躺率,以及它們的運行態(tài)環(huán)境。對應(yīng)的万矾,虛擬機可以理解為模擬運行的一整套操作系統(tǒng)(提供了運行態(tài)環(huán)境和其他系統(tǒng)環(huán)境)和跑在上面的應(yīng)用悼吱。

查看當前有哪些容器正在運行

docker ps

查看所有容器

docker ps -a

啟動、停止良狈、重啟容器命令:

docker start container_name/container_id
docker stop container_name/container_id
docker restart container_name/container_id

后臺啟動一個容器后后添,可以使用attach命令進入到這個容器

docker attach container_name/container_id

刪除容器的命令:

docker rm container_name/container_id

刪除所有停止的容器:

docker rm $(docker ps -a -q)

鏡像加速器

因為國內(nèi)連接 Docker 的官方倉庫很慢,因此我們在日常使用中會使用Docker 中國加速器薪丁。通過 Docker 官方鏡像加速遇西,中國區(qū)用戶能夠快速訪問最流行的 Docker 鏡像。該鏡像托管于中國大陸严嗜,本地用戶現(xiàn)在將會享受到更快的下載速度和更強的穩(wěn)定性粱檀,從而能夠更敏捷地開發(fā)和交付 Docker 化應(yīng)用。

Docker 中國官方鏡像加速可通過registry.docker-cn.com訪問漫玄。該鏡像庫只包含流行的公有鏡像梧税,私有鏡像仍需要從美國鏡像庫中拉取。我使用的是CentOS 7系統(tǒng)称近,在 /etc/docker/daemon.json 中寫入如下內(nèi)容:

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}

注意第队,一定要保證該文件符合 json 規(guī)范,否則 Docker 將不能啟動刨秆。

然后重新啟動服務(wù)

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

檢查加速器是否生效:在命令行執(zhí)行 docker info凳谦,如果從結(jié)果中看到了如下內(nèi)容,說明配置成功衡未。

Registry Mirrors:
 https://registry.docker-cn.com/

參考

Docker — 從入門到實踐
Docker系列之一:入門介紹
Docker 入門教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尸执,一起剝皮案震驚了整個濱河市家凯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌如失,老刑警劉巖绊诲,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異褪贵,居然都是意外死亡掂之,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門脆丁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來世舰,“玉大人,你說我怎么就攤上這事槽卫「梗” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵歼培,是天一觀的道長震蒋。 經(jīng)常有香客問我,道長躲庄,這世上最難降的妖魔是什么查剖? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮读跷,結(jié)果婚禮上梗搅,老公的妹妹穿的比我還像新娘。我一直安慰自己效览,他們只是感情好无切,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丐枉,像睡著了一般哆键。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘦锹,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天籍嘹,我揣著相機與錄音,去河邊找鬼弯院。 笑死辱士,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的听绳。 我是一名探鬼主播颂碘,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼椅挣!你這毒婦竟也來了头岔?” 一聲冷哼從身側(cè)響起塔拳,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎峡竣,沒想到半個月后靠抑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡适掰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年颂碧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攻谁。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡稚伍,死狀恐怖弯予,靈堂內(nèi)的尸體忽然破棺而出戚宦,到底是詐尸還是另有隱情,我是刑警寧澤锈嫩,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布受楼,位于F島的核電站,受9級特大地震影響呼寸,放射性物質(zhì)發(fā)生泄漏艳汽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一对雪、第九天 我趴在偏房一處隱蔽的房頂上張望河狐。 院中可真熱鬧,春花似錦瑟捣、人聲如沸馋艺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捐祠。三九已至,卻和暖如春桑李,著一層夾襖步出監(jiān)牢的瞬間踱蛀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工贵白, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留率拒,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓禁荒,卻偏偏與公主長得像猬膨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子圈浇,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355