序言
“Docker”一詞來自英國口語,意爲碼頭工人(Dock Worker),即從船上裝卸貨物的人。
有意思的是,Docker 公司起初是一家名爲 dotCloud 的平臺即服務(Platform-as-a-Service, PaaS)提供商。底層技術上,dotCloud 平臺利用了 Linux 容器技術。爲了方便創建和管理這些容器,dotCloud 開發了一套內部工具,之後被命名爲“Docker”。Docker就是這樣誕生的!
2013年,dotCloud 的 PaaS 業務並不景氣,公司需要尋求新的突破。於是他們聘請了 Ben Golub 作爲新的 CEO,將公司重命名爲“Docker”,放棄dotCloud PaaS 平臺,懷揣着“將 Docker 和容器技術推向全世界”的使命,開啓了一段新的征程。(從此也可以知道docker的應用場景,[email protected])
多數技術人員在談到 Docker 時,主要是指 Docker 引擎。Docker 引擎是用於運行和編排容器的基礎設施工具。有 VMware 管理經驗的讀者可以將其類比爲 ESXi。ESXi 是運行虛擬機的核心管理程序,而 Docker 引擎是運行容器的核心容器運行時。其他 Docker 公司或第三方的產品都是圍繞 Docker 引擎進行開發和集成的。
Docker 引擎可以從 Docker 網站下載,也可以基於 GitHub 上的源碼進行構建。無論是開源版本還是商業版本,都有 Linux 和 Windows 版本。Docker 引擎主要有兩個版本:企業版(EE)和社區版(CE)。每個季度,企業版和社區版都會發佈一個穩定版本。社區版本會提供 4 個月的支持,而企業版本會提供 12 個月的支持。社區版還會通過 Edge 方式發佈月度版。
Docker開源項目(Moby)
“Docker”一詞也會用於指代開源 Docker 項目。其中包含一系列可以從 Docker 官網下載和安裝的工具,比如 Docker 服務端和 Docker 客戶端。不過,該項目在 2017 年於 Austin 舉辦的 DockerCon 上正式命名爲 Moby 項目。由於這次改名,GitHub 上的 docker/docker 庫也被轉移到了 moby/moby,並且擁有了項目自己的 Logo.
可以說Moby是Docker之母。通過Moby可以將定製化的組件打包做成一個Docker,而Moby就相當於一個組件倉庫與Docker工廠。Docker公司的這一舉動可以說也是順應了潮流,將Docker與操作系統解耦,並且將其以組件組裝的形式模塊化。可以說今後,操作系統也是Docker容器的一個基礎組件。而Moby項目既是一個組件庫又是一個框架,爲今後組件製作與組裝提供了一套規範。(Moby是Docker的上游,用於組裝Docker,Docker在用來應用.從2個項目的Logo上就可以看出來,Moby是個鯨魚尾巴,而Docker是個鯨魚[email protected])
Docker架構與流程
Docker的架構如下(粘貼複製自官網^_^)
從圖上可以看出Docker分了3個大類,客戶端,主機,倉庫(注意都是複數),
- Clients:就是用於接收連接Hosts的客戶端,用於發送命令給Hosts執行
- Hosts:用於接收Clients的命令,同時與遠程倉庫交互,同時屏蔽了不同的操作系統差異,提供了統一的API給Clients操作.(就是我們說的Docker守護進程)
- Repositorys:存儲了很多不同應用的鏡像.當本地沒有鏡像的時候,會從遠程倉庫下載到本地.
如下是個簡單的流程圖途(也是從網上下的原址是:https://www.jianshu.com/p/2302ef03cfa2)
Actor可以看成是Clients,Docker Dameon是Hosts,官方倉庫對應Repositorys.
應用於鏡像的關係
容器與鏡像的關係類似於面向對象編程中的對象與類。(在舉例來講Nginx就是個鏡像,他的應用實例就是Nginx容器.這麼描述感覺有點怪哈.在一般使用的時候一般我們會選擇Linux的鏡像,創建一個Linux的容器,然後在Linux的容器裏面創建Nginx服務~~~~我覺得這麼描述是不是要容易理解一點[email protected])
Docker屬性 | 面向對象屬性 |
---|---|
容器 | 對象 |
鏡像 | 類 |
安裝tomcat用例
Centos7上安裝Docker Client 和 Docker Service
這環境的安裝其實很簡單,主要是熟悉命令.具體可以參考https://www.runoob.com/docker/docker-tutorial.html
#Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 #Docker 。
#通過 uname -r 命令查看你當前的內核版本
[cuiyaonan2000@runoob ~]# uname -r
#移除舊的版本
[cuiyaonan2000@runoob ~]# sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
#安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
[cuiyaonan2000@runoob ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#設置yum源
[cuiyaonan2000@runoob ~]# sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum 緩存
[cuiyaonan2000@runoob ~]# sudo yum makecache fast
#以查看所有倉庫中所有docker版本,並選擇特定版本安裝
[cuiyaonan2000@runoob ~]# yum list docker-ce --showduplicates | sort -r
#由於repo中默認只開啓stable倉庫,故這裏安裝的是最新穩定版17.12.0
#也可以指定版本 例如:sudo yum install docker-ce-17.12.0.ce
[cuiyaonan2000@runoob ~]# sudo yum install docker-ce
#啓動docker
[cuiyaonan2000@runoob ~]# sudo systemctl start docker
#加入開機啓動
[cuiyaonan2000@runoob ~]# sudo systemctl enable docker
#驗證安裝是否成功(有client和service兩部分表示docker安裝啓動都成功了)
[cuiyaonan2000@runoob ~]# docker version
創建Tomcat鏡像實例
注意創建過得容器並不會消失,如果停用了可以使用docker ps -a 查看.然後使用docker start <name>啓動.如果不能啓動使用systemctl restart docker 後在啓動就可以了.創建了當然也能刪除塞.具體命令可以參考:https://www.runoob.com/docker/docker-container-connection.html.
#拉取官方的鏡像
[cuiyaonan2000@runoob ~]# docker pull tomcat
#查看本地的鏡像
[cuiyaonan2000@runoob ~]# docker images
# 創建鏡像名稱爲tomcat的一個實例 -p指定端口映射 -d表示以守護線程運行
[cuiyaonan2000@runoob ~]# docker run --name mytomcat -p 8080:8080 -d tomcat
# 此命令用於查看 實例化的鏡像容器
[cuiyaonan2000@runoob ~]# docker ps
#停止容器運行
[cuiyaonan2000@runoob ~]# docker stop mytomcat
#啓動一個已經存在的容器
[cuiyaonan2000@runoob ~]# docker start mytomcat