起因

            之前的幾篇博客,需要一定的docker知識(雖然可以直接上手),但是對于沒有docker基礎的人來說是不知道為什么要這樣做的。

            我把之前學習docker的步驟整理出來,希望可以幫助更多的人去學習docker。

          目錄:

            1. Docker 基礎

              1.1 Docker 歷史

              1.2 Docker 組成部分

              1.3 Docker 核心概念

              1.4 Docker 命令

              1.5 Dockerfile

            2. CI(持續(xù)集成)
              2.1 Jenkins
            3. CD(持續(xù)部署)
              3.1 Mesos
              3.2 Kubernetes(K8S)
            4. 服務發(fā)現(xiàn)
              4.1 etcd
              4.2 SkyDNS
              4.3 Consul
            5. 管理平臺

            6. 總結

          ?一、Docker 基礎

          1.?Docker 歷史

            摘自《Docker開發(fā)指南》
          航運的比喻 Docker 的哲學經(jīng)常用航運集裝箱的比喻來解釋,這或許能解釋Docker 名字的由來。 這個比喻大概是這樣的。
          運輸貨物時,要用到多種不同的運輸工具,可能包括貨車、叉車、起重機、火車和輪船。這意味著這些工具必須能夠處理大小不一、
          運輸需求各異的貨物(例如袋裝的咖啡、桶裝的有毒化學品、盒裝的電子產(chǎn)品、成隊的豪華轎車、冷凍羊排)。以往這是一道復雜且成本高
          昂的工序,需要付出大量人力物力。如圖1-3 所示,碼頭工人在每個中轉站手動裝卸貨物。
          聯(lián)運集裝箱的誕生為運輸產(chǎn)業(yè)帶來了一場革命。集裝箱的大小有了統(tǒng)一標準,并且設計的出發(fā)點是能以最少的人力在不同的運輸方式之
          間搬運。所有的運輸機械,無論是叉車和起重機,還是貨車、火車和輪船,都為搬運這些集裝箱而設計。運輸對溫度敏感的貨物(如食品和
          藥物)時,可以使用具有冷凍及保溫功能的集裝箱。標準化的好處甚至延伸到其他支撐體系,如集裝箱的標簽及鉛封方式。因此,運輸產(chǎn)業(yè)
          只需專注于處理集裝箱本身的搬運以及儲存的問題,而集裝箱內(nèi)的東西則完全由貨物生產(chǎn)商負責。
          Docker的目標是把集裝箱的標準化流程運用到IT行業(yè)中去。近年來,軟件系統(tǒng)的多樣性激增。在單一機器中運行LAMP4組合的日子已
          一去不復返。如今典型的系統(tǒng)可能包含JavaScript框架、NoSQL數(shù)據(jù)庫、消息隊列、REST API,以及由各種不同編程語言所寫的后端。
          而這個組合的全部或部分都需要能夠在各種不同的硬件上運行——從開發(fā)者的筆記本電腦,到公司內(nèi)部的測試集群,再到云端的生產(chǎn)環(huán)境。每
          個環(huán)境都存在差異,它們在不一樣的硬件上運行著不一樣的操作系統(tǒng)和不同版本的程序庫。簡而言之,我們的問題與當時運輸產(chǎn)業(yè)遇到的極
          為相似——我們正不斷付出巨大人力,在不同環(huán)境之間移動程序。Docker容器簡化了移動應用程序的工作,好比聯(lián)運集裝箱簡化了貨物運輸
          一樣。開發(fā)者只需專注于程序開發(fā),再也不用擔心測試與正式發(fā)布時環(huán)境及依賴關系的差異所帶來的問題。運維部門則只需專心處理與運行
          容器相關的核心問題,例如分配資源、啟動和停止容器,以及在服務器間的遷移工作。
            docker(原本是指在船只??扛劭谥髮⑸唐芬七M或移出的工人)的工作內(nèi)容(一圖勝千言,摘自《Docker 實踐》)



          ?

            看完上面的介紹之后,再去閱讀官方對于Docker的介紹,會更容易理解。

            官方介紹:查看 <https://docs.docker.com/get-started/>

            個人理解:

              Docker 可以理解為一個容器(當然本質(zhì)是一個軟件),將應用(要發(fā)布的網(wǎng)站程序文件)和應用的依賴打包,在任意環(huán)境(服務器、云等等)進行部署。

          ?1.2 Docker 組成部分

            Docker 邏輯上由三部分組成:Daemon(守護進程)、Rest API(API,所有客戶端都通過API進行操作)、Client(客戶端)



          ?

          ?

            官方介紹:查看 <https://docs.docker.com/engine/docker-overview/>

          1.3 Docker 核心概念

            核心概念:層、鏡像、容器。

            三者之間的關系:

            層可以理解為一些文件的集合,鏡像由不同的層構成(只有最上面的層可以寫,其他層都是只讀的)



          ?

          ?

          ?

            鏡像和容器之間的關系:



            個人理解:

              面向?qū)ο罄斫夥绞剑虹R像可以比作類,容器可以比作類的對象(具體的一個實例),想要刪除鏡像,需要將所有使用鏡像運行的容器停止并刪除。

          ?  擴展閱讀:

              docker 底層技術:cgroups(負責管理容器使用的資源,例如CPU、內(nèi)存)、Namespaces(負責容器之間的隔離)、UFS(Union
          File System, 聯(lián)合文件系統(tǒng))

              如果想深入理解docker的原理,可以看一下UFS原理。

          1.4 Docker 命令

            官方介紹:查看 <https://docs.docker.com/engine/reference/commandline/cli/>

            舉例子:

            搜索鏡像:docker search 要搜索的鏡像
          docker search redis
            下載鏡像:doucker pull 要下載的鏡像:標簽(如果不寫,默認為latest)
          docker pull redis:latest
            運行容器:docker run 參數(shù) redis(鏡像名稱),具體參數(shù)代表含義可以參考(查看
          <https://docs.docker.com/engine/reference/commandline/run/>)
          <https://docs.docker.com/engine/reference/commandline/run/>
          docker run -d -p 6379:6379 --restart=on-failure:10 --name myredis redis
            Docker 命令可以分為以下幾類:

            run命令、鏡像信息、鏡像管理、容器信息、容器管理、docker信息

            說明:具體每一個分類有哪些命令,可以查看文章最后的總結

          1.5 Dockerfile

            Dockerfile 一般用于創(chuàng)建鏡像,具體使用請查看
          <https://www.cnblogs.com/zhizihuakai/p/11293802.html>

            官方介紹:查看
          <https://docs.docker.com/develop/develop-images/dockerfile_best-practices/>

            說明:

              Docker Compose、Docker Machine 之前已經(jīng)寫文章說明,這里就不再描述了。

              官網(wǎng)介紹:查看Compose命令 <https://docs.docker.com/compose/reference/overview/>?
          查看Machine命令 <https://docs.docker.com/machine/reference/>

          二、CI(持續(xù)集成)

            Jenkins是最流行的持續(xù)集成工具。Jenkins可以使用docker進行發(fā)布。

            Jenkins使用docker進行安裝步驟,請查看 <https://www.jianshu.com/p/0391e225e4a6>
          。也可以直接執(zhí)行以下命令下載鏡像和運行容器
          #下載Jenkins鏡像,并運行容器 docker run -d -p 8090:8080 -p 50000:50000 -v
          jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime --name myjenkins
          docker.io/jenkins/jenkins
            然后在瀏覽器輸入http://*:8090 <http://192.168.0.6:8090/>?(*為docker所在宿主機的ip地址),如下圖:



            密碼可以通過以下命令查看
          #myredis 是容器的名稱(docker run命令的--name參數(shù)) docker logs myredis


          ?

          ?

            復制密碼粘貼到輸入框,然后點擊“繼續(xù)”,然后進行Jenkins的相關配置即可(很方便吧)。

          三、CD(持續(xù)部署)

          3.1?Mesos

            官網(wǎng):查看 <http://mesos.apache.org/index.html>

            目前國內(nèi)有一些公司在使用,可以了解一下。

          3.2 Kubernetes(K8S)

            官網(wǎng)文檔:查看 <http://docs.kubernetes.org.cn/>

            目前正在學習。。。

          四、服務發(fā)現(xiàn)

          4.1 etcd

            etcd是一個分布式一致性鍵值存儲系統(tǒng),用于共享配置和服務發(fā)現(xiàn)。

            使用方式:查看 <https://www.jianshu.com/p/d63265949e52>

          4.2 SkyDNS

            官網(wǎng):查看 <https://github.com/skynetservices/skydns>

          4.3 Consul

            Consul主要包含三部分功能:服務配置(類似于etcd和zookeeper)、服務發(fā)現(xiàn)(類似于SkyDNS)、服務監(jiān)控。

            使用介紹:查看 <https://docs.docker.com/samples/library/consul/>

          五、管理平臺

            用過幾個平臺(DockerUI、Portainer、Rancher等等),感覺還是Portainer更好用一些。

            Portainer 官網(wǎng):查看 <https://www.portainer.io/>

            使用以下命令下載和運行容器
          docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --name
          myportainer docker.io/portainer/portainer
          使用以下地址訪問:http://*:9000 <http://192.168.0.6:9000/>(*是docker所在宿主機的ip地址)



          ?



          ?



          ?

          六、總結

            我的學習路線圖,如下圖(從左至右)。

            學習方法:精讀(基礎知識)、泛讀(關聯(lián)知識)

          ?

          ?

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關注微信

                午夜激情久久 | 成插人综合| 欧美乱妇日本无乱码特黄大片 | 男人爽到发出呻吟声 | 五月丁香综合婷婷 |