現在Docker的使用已經很是廣泛,特別在一線互聯網公司。使用Docker技術能夠幫助企業快速水平擴展服務,從而到達彈性部署業務的能力。在雲服務概念興起以後,Docker的使用場景和範圍進一步發展,現在在微服務架構愈來愈流行的狀況下,微服務+Docker的完美組合,更加方便微服務架構運維部署落地。html
本文詳細解釋介紹Docker入門相關內容,後期重點關注Docker在微服務體系中的使用。在瞭解Docker以前咱們先考慮幾個問題:一、Docker是什麼?二、爲何要使用Docker,它有什麼優點?帶着這些問題咱們來看看下面的內容。linux
什麼是Docker?git
Docker 是世界領先的軟件容器平臺。開發人員利用 Docker 能夠消除協做編碼時「在個人機器上可正常工做」的問題。運維人員利用 Docker 能夠在隔離容器中並行運行和管理應用,得到更好的計算密度。企業利用 Docker 能夠構建敏捷的軟件交付管道,以更快的速度、更高的安全性和可靠的信譽爲 Linux 和 Windows Server 應用發佈新功能。sql
Docker 屬於 Linux 容器的一種封裝,提供簡單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。Docker 將應用程序與該程序的依賴,打包在一個文件裏面。運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器裏運行,就好像在真實的物理機上運行同樣。有了 Docker,就不用擔憂環境問題。docker
整體來講,Docker 的接口至關簡單,用戶能夠方便地建立和使用容器,把本身的應用放入容器。容器還能夠進行版本管理、複製、分享、修改,就像管理普通的代碼同樣。json
Docker 最初是 dotCloud 公司創始人 Solomon Hykes 在法國期間發起的一個公司內部項目,它是基於 dotCloud 公司多年雲服務技術的一次革新,並於 2013 年 3 月以 Apache 2.0 受權協議開源,主要項目代碼在 GitHub 上進行維護。Docker 項目後來還加入了 Linux 基金會,併成立推進 開放容器聯盟(OCI)。centos
Docker 自開源後受到普遍的關注和討論,至今其 GitHub 項目已經超過 4 萬 6 千個星標和一萬多個 fork。甚至因爲 Docker 項目的火爆,在 2013 年末,dotCloud 公司決定更名爲 Docker。Docker 最初是在 Ubuntu 12.04 上開發實現的;Red Hat 則從 RHEL 6.5 開始對 Docker 進行支持;Google 也在其 PaaS 產品中普遍應用 Docker。api
爲何要使用Dockertomcat
容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷儘可能小。傳統虛擬機方式運行 10 個不一樣的應用就要起 10 個虛擬機,而Docker 只須要啓動 10 個隔離的應用便可。安全
具體說來,Docker 在以下幾個方面具備較大的優點。
一、更快速的交付和部署
對開發和運維(devop)人員來講,最但願的就是一次建立或配置,能夠在任意地方正常運行。
開發者可使用一個標準的鏡像來構建一套開發容器,開發完成以後,運維人員能夠直接使用這個容器來部署代碼。 Docker 能夠快速建立容器,快速迭代應用程序,並讓整個過程全程可見,使團隊中的其餘成員更容易理解應用程序是如何建立和工做的。 Docker 容器很輕很快!容器的啓動時間是秒級的,大量地節約開發、測試、部署的時間。
二、更高效的虛擬化
Docker 容器的運行不須要額外的 hypervisor 支持,它是內核級的虛擬化,所以能夠實現更高的性能和效率。
三、更輕鬆的遷移和擴展
Docker 容器幾乎能夠在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、我的電腦、服務器等。 這種兼容性可讓用戶把一個應用程序從一個平臺直接遷移到另一個。
四、更簡單的管理
使用 Docker,只須要小小的修改,就能夠替代以往大量的更新工做。全部的修改都以增量的方式被分發和更新,從而實現自動化而且高效的管理。
從下圖能夠看出,VM是一個運行在宿主機之上的完整的操做系統,VM運行自身操做系統會佔用較多的CPU、內存、硬盤資源。Docker不一樣於VM,只包含應用程序以及依賴庫,基於libcontainer運行在宿主機上,並處於一個隔離的環境中,這使得Docker更加輕量高效,啓動容器只需幾秒鐘以內完成。因爲Docker輕量、資源佔用少,使得Docker能夠輕易的應用到構建標準化的應用中。但Docker目前還不夠完善,好比隔離效果不如VM,共享宿主機操做系統的一些基礎庫等;網絡配置功能相對簡單,主要以橋接方式爲主;查看日誌也不夠方便靈活。
Docker 在容器的基礎上,進行了進一步的封裝,從文件系統、網絡互聯到進程隔離等等,極大的簡化了容器的建立和維護。使得 Docker 技術比虛擬機技術更爲輕便、快捷。
做爲一種新興的虛擬化方式,Docker 跟傳統的虛擬化方式相比具備衆多的優點。Docker 容器的啓動能夠在秒級實現,這相比傳統的虛擬機方式要快得多;Docker 對系統資源的利用率很高,一臺主機上能夠同時運行數千個 Docker 容器。
Docker是CS架構,主要有兩個概念:
瞭解了Docker的組成,再來了解一下Docker的三個主要概念:
https://registry.hub.docker.com/
,也能夠搭建本身私有的Docker registry。鏡像就至關於打包好的版本,鏡像啓動以後運行在容器中,倉庫就是裝存儲鏡像的地方。
建議在linux環境下安裝Docker,window環境搭建比較複雜且容易出錯,使用Centos7+yum來安裝Docker環境很方便。
Docker 軟件包已經包括在默認的 CentOS-Extras 軟件源裏。所以想要安裝 docker,只須要運行下面的 yum 命令:
yum install docker
安裝完成後,使用下面的命令來啓動 docker 服務,並將其設置爲開機啓動:
service docker start chkconfig docker on
LCTT 譯註:此處採用了舊式的 sysv 語法,如採用CentOS 7中支持的新式 systemd 語法,以下:
systemctl start docker.service systemctl enable docker.service
測試
docker version
輸入上述命令,返回docker的版本相關信息,證實docker安裝成功。
下面,咱們經過最簡單的 image 文件"hello world",感覺一下 Docker。
由於國內鏈接 Docker 的官方倉庫很慢,所以咱們在平常使用中會使用Docker 中國加速器。經過 Docker 官方鏡像加速,中國區用戶可以快速訪問最流行的 Docker 鏡像。該鏡像託管於中國大陸,本地用戶如今將會享受到更快的下載速度和更強的穩定性,從而可以更敏捷地開發和交付 Docker 化應用。
Docker 中國官方鏡像加速可經過registry.docker-cn.com
訪問。該鏡像庫只包含流行的公有鏡像,私有鏡像仍須要從美國鏡像庫中拉取。
修改系統中docker對應的配置文件便可,以下:
vi /etc/docker/daemon.json #添加後 { "registry-mirrors": ["https://registry.docker-cn.com"], "live-restore": true }
運行下面的命令,將 image 文件從倉庫抓取到本地。(有時候會失敗,重試一次便可)
docker pull library/hello-world
上面代碼中,docker image pull是抓取 image 文件的命令。library/hello-world是 image 文件在倉庫裏面的位置,其中library是 image 文件所在的組,hello-world是 image 文件的名字。
抓取成功之後,就能夠在本機看到這個 image 文件了。
docker images #顯示結果 REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/hello-world latest f2a91732366c 3 months ago 1.848 kB
如今,運行這個 image 文件。
docker run hello-world #顯示結果 Hello from Docker! This message shows that your installation appears to be working correctly. ...
輸出這段提示之後,hello world就會中止運行,容器自動終止。有些容器不會自動終止,由於提供的是服務,好比Mysql鏡像等。
除過以上咱們使用的Docker命令外,Docker還有一些其它經常使用的命令
拉取docker鏡像
docker pull image_name
查看宿主機上的鏡像,Docker鏡像保存在/var/lib/docker目錄下:
docker images
刪除鏡像
docker rmi docker.io/tomcat:7.0.77-jre7 或者 docker rmi b39c68b7af30
查看當前有哪些容器正在運行
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信息
docker info
從Docker hub上下載某個鏡像:
docker pull centos:latest docker pull centos:latest
執行docker pull centos會將Centos這個倉庫下面的全部鏡像下載到本地repository。
Docker — 從入門到實踐
Docker系列之一:入門介紹
Docker 入門教程
轉載自 純潔的微笑
https://www.cnblogs.com/ityouknow/p/8520296.html