溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Docker--------企業(yè)級(jí)最佳入門

發(fā)布時(shí)間:2020-07-29 20:49:34 來(lái)源:網(wǎng)絡(luò) 閱讀:1923 作者:asd1123509133 欄目:建站服務(wù)器

1. 背景

    * DockerDocker.inc公司開(kāi)源的一個(gè)基于LXC技術(shù)之上構(gòu)建的Container容器引擎,源代碼托管在GitHub上,基于Go語(yǔ)言并遵從Apache2.0協(xié)議開(kāi)源。

* Docker項(xiàng)目的目標(biāo)是實(shí)現(xiàn)輕量級(jí)的操作系統(tǒng)虛擬化解決方案。

* Docker是通過(guò)內(nèi)核虛擬化技術(shù)(namespacescgroups等)來(lái)提供容器的資源隔離與安全保障等。由于Docker通過(guò)操作系統(tǒng)層的虛擬化實(shí)現(xiàn)隔離,所以Docker容器在運(yùn)行時(shí),不需要類似虛擬機(jī)VM額外的操作系統(tǒng)開(kāi)銷,提高資源利用率。


2. 優(yōu)勢(shì)

  * 部署簡(jiǎn)單

  * 管理簡(jiǎn)單

  * 秒級(jí)應(yīng)用啟動(dòng)

  * 與宿主機(jī)使用同一個(gè)內(nèi)核,性能損耗小

  * 隔離性高

  * 鏡像一次構(gòu)建,到處運(yùn)行


3. 應(yīng)用場(chǎng)景

Docker--------企業(yè)級(jí)最佳入門

簡(jiǎn)化配置,統(tǒng)一配置,通過(guò)鏡像快速啟動(dòng)(Simplifying)

代碼流水線管理,開(kāi)發(fā)環(huán)境->測(cè)試環(huán)境->預(yù)生產(chǎn)環(huán)境->灰度發(fā)布->正式發(fā)布,docker在這里實(shí)現(xiàn)了快速遷移(Code Oioeline Management)

開(kāi)發(fā)效率,對(duì)開(kāi)發(fā)人員,有了鏡像,直接啟動(dòng)容器即可(Developer Productivity)

應(yīng)用隔離,相對(duì)于虛擬機(jī)的完全隔離會(huì)占用資源,docker會(huì)比較節(jié)約資源(Applsolation)

服務(wù)器整合,一臺(tái)服務(wù)器跑多個(gè)docker容器,提高服務(wù)器的利用率(Server Consolidation)

調(diào)試能力,debug調(diào)試(Debugging Capabilties)

多租戶,一個(gè)租戶多個(gè)用戶,類似于阿里公有云的一個(gè)project下多個(gè)用戶(Multi-tenancy)

快速部署,不需要啟動(dòng)操作系統(tǒng),實(shí)現(xiàn)秒級(jí)部署(Rapid Deplovment)


4. docker相關(guān)注意

   * 容器不同于虛擬機(jī)

   * 容器理論推薦單一進(jìn)程

   * 容器不如虛擬機(jī)來(lái)得成熟

   * 容器可以在幾分之一秒內(nèi)啟動(dòng)

   * 容器已在大規(guī)模環(huán)境證明了自身的價(jià)值

   * IT人員稱容器為輕量級(jí)

   * Docker已成為容器的代名詞,但它不是唯一的提供者

   * 容器能節(jié)省IT人力,加快業(yè)務(wù)更新效率


5. docker與容器本身意義

    面向產(chǎn)品: 簡(jiǎn)化交付流程

    面向開(kāi)發(fā): 簡(jiǎn)化環(huán)境配置

    * 面向測(cè)試:   多版本測(cè)試

    * 面向運(yùn)維: 簡(jiǎn)化環(huán)境問(wèn)題

    面向架構(gòu):   自動(dòng)化擴(kuò)容 [ 微服務(wù) ]


6. 使用Docker原因

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

  首先,Docker容器的啟動(dòng)可以在秒級(jí)實(shí)現(xiàn),這相比傳統(tǒng)的虛擬機(jī)方式要快得多。其次,Docker對(duì)系統(tǒng)資源的利用率很低,一臺(tái)主機(jī)上可以同時(shí)運(yùn)行數(shù)千個(gè)Docker容器。



6. docker相關(guān)概念

 ** 鏡像 [ p_w_picpath ]

  * Docker鏡像就是一個(gè)只讀的模板。

    例如:一個(gè)鏡像可以包含一個(gè)完整的CentOS操作系統(tǒng)環(huán)境,里面僅安裝了Apache或用戶需要的其他應(yīng)用程序。

     鏡像可以用來(lái)創(chuàng)建Docker容器。

       Docker提供了一個(gè)很簡(jiǎn)單的機(jī)制來(lái)創(chuàng)建鏡像或者更新現(xiàn)有的鏡像,用戶甚至可以直接從其他人那里下載一個(gè)已經(jīng)做好的鏡像來(lái)直接使用。


 ** 容器 [ container ]

  * Docker利用容器來(lái)運(yùn)行應(yīng)用。

        容器是從鏡像創(chuàng)建的運(yùn)行實(shí)例。它可以被啟動(dòng)、開(kāi)始、停止、刪除。每個(gè)容器都是相互隔離的,保證安全的平臺(tái)。

        可以把容器看做是一個(gè)簡(jiǎn)易版的Linux環(huán)境(包括root用戶權(quán)限、進(jìn)程空間、用戶空間和網(wǎng)絡(luò)空間等)和運(yùn)行在其中的應(yīng)用程序。


 ** 倉(cāng)庫(kù) [ registry ]

  * 倉(cāng)庫(kù)是集中存放鏡像文件的場(chǎng)所。有時(shí)候把倉(cāng)庫(kù)和倉(cāng)庫(kù)注冊(cè)服務(wù)器(Registry)混為一談,并不嚴(yán)格區(qū)分。實(shí)際上,倉(cāng)庫(kù)注冊(cè)服務(wù)器上往往存放著多個(gè)倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)中又包含了多個(gè)鏡像,每個(gè)鏡像有不同的標(biāo)簽(tag)。

        倉(cāng)庫(kù)分為公開(kāi)倉(cāng)庫(kù)(Public)和私有倉(cāng)庫(kù)(Private)兩種形式。

        最大的公開(kāi)倉(cāng)庫(kù)是Docker Hub,存放了數(shù)量龐大的鏡像供用戶下載。國(guó)內(nèi)的公開(kāi)倉(cāng)庫(kù)包括Docker Pool等,可以提供大陸用戶更穩(wěn)定快讀的訪問(wèn)。

        當(dāng)用戶創(chuàng)建了自己的鏡像之后就可以使用push命令將它上傳到公有或者私有倉(cāng)庫(kù),這樣下載在另外一臺(tái)機(jī)器上使用這個(gè)鏡像時(shí)候,只需需要從倉(cāng)庫(kù)上pull下來(lái)就可以了。


7. docker實(shí)戰(zhàn)

   * 系統(tǒng)環(huán)境 [ docker運(yùn)行環(huán)境推薦在 linux 內(nèi)核大于 2.6 ]

[root@docker ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
[root@docker ~]# uname -r
3.10.0-327.36.3.el7.x86_64

   * docker 服務(wù)安裝

[root@docker ~]# yum install docker


   * 啟動(dòng) docker 服務(wù)

[root@docker ~]# systemctl start docker.service


   * 查看 docker 版本信息

[root@docker ~]# docker version
Client:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-28.git1398f24.el7.centos.x86_64
 Go version:      go1.7.4
 Git commit:      1398f24/1.12.6
 Built:           Fri May 26 17:28:18 2017
 OS/Arch:         linux/amd64

Server:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-28.git1398f24.el7.centos.x86_64
 Go version:      go1.7.4
 Git commit:      1398f24/1.12.6
 Built:           Fri May 26 17:28:18 2017
 OS/Arch:         linux/amd64


   * 在 docker hub 倉(cāng)庫(kù)上搜索鏡像[ 默認(rèn)從docker.io上搜索 ]

     docker search 鏡像名稱:版本號(hào)[ 不填默認(rèn)為latest ]

     INDEX: 搜索源

     NAME: 鏡像名稱

   DESCRIPTION: 描述

     STARS: 下載次數(shù)

   OFFICIAL: 是否官方

   AUTOMATED: 是否自動(dòng)化

[root@docker ~]# docker search centos
INDEX       NAME                                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/centos                                 The official build of CentOS.                   3397      [OK]       
docker.io   docker.io/jdeathe/centos-ssh                     CentOS-6 6.9 x86_64 / CentOS-7 7.3.1611 x8...   70                   [OK]
docker.io   docker.io/nimmis/java-centos                     This is docker p_w_picpaths of CentOS 7 with dif...   26                   [OK]
docker.io   docker.io/gluster/gluster-centos                 Official GlusterFS Image [ CentOS-7 +  Glu...   19                   [OK]


   * 從 docker hub 倉(cāng)庫(kù)上獲取(下載)鏡像至本地庫(kù) [ 默認(rèn)從docker.io上下載 ]

   docker pull 鏡像名稱:版本號(hào)[ 不填默認(rèn)為latest ]

[root@docker ~]# docker pull centos


   * 查看本地庫(kù)所有鏡像

     docker p_w_picpaths

[root@docker ~]# docker p_w_picpaths
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos             latest              3bee3060bfc8        9 days ago          192.5 MB

 

   * 導(dǎo)出本地庫(kù)鏡像

     docker save 鏡像名稱:版本號(hào) > 導(dǎo)出文件名

[root@docker ~]# docker save centos > centos.tar.gz


   * 刪除本地庫(kù)鏡像

     docker rmi 鏡像名稱:版本號(hào)

[root@docker ~]# docker rmi centos
Untagged: centos:latest
Untagged: docker.io/centos@sha256:aebf12af704307dfa0079b3babdca8d7e8ff6564696882bcb5d11f1d461f9ee9
Deleted: sha256:3bee3060bfc81c061ce7069df35ce090593bda584d4ef464bc0f38086c11371d


   * 導(dǎo)入鏡像文件至本地庫(kù)

     docker load < 鏡像文件

[root@docker ~]# docker load < centos.tar.gz 
Loaded p_w_picpath: docker.io/centos:latest


   * 新建容器并運(yùn)行 

     當(dāng)利用docker run來(lái)創(chuàng)建容器時(shí),Docker在后臺(tái)運(yùn)行的標(biāo)準(zhǔn)操作包括:

        * 檢查本地是否存在指定的鏡像,不存在就從公有倉(cāng)庫(kù)下載

        * 利用鏡像創(chuàng)建并啟動(dòng)一個(gè)容器

        * 分配一個(gè)文件系統(tǒng),并在只讀的鏡像層外面掛在一層可讀寫層

        * 從宿主主機(jī)配置的網(wǎng)橋接口中橋接一個(gè)虛擬接口到容器中去

        * 從地址池配置一個(gè)ip地址給容器

        * 執(zhí)行用戶指定的應(yīng)用程序

        * 執(zhí)行完畢后容器被終止


     docker run [option....]

     例如:運(yùn)行一個(gè)容器,指定名稱為hello,  輸出hello之后終止容器

[root@docker ~]# docker run --name hello centos echo "hello"
hello


   例如:?jiǎn)?dòng)一個(gè)容器,指定bash命令,并進(jìn)入容器內(nèi)部

     -i: 則讓容器的標(biāo)準(zhǔn)輸入保持打開(kāi)。

       -t: 讓Docker分配一個(gè)偽終端,并綁定到容器的標(biāo)準(zhǔn)輸入上

        /bin/bash: 執(zhí)行一個(gè)命令

[root@docker ~]# docker run -it centos  /bin/bash    
[root@b4473c885f51 /]# pwd
/


  * 退出并不關(guān)閉容器

     ctrl + p + q

[root@f91270f431bd /]# [root@docker ~]#


   * 啟動(dòng)已終止容器

   docker start 容器名稱

[root@docker ~]# docker start hello
hello


   *以守護(hù)進(jìn)程運(yùn)行

    更多的時(shí)候,需要讓Docker容器在后臺(tái)以守護(hù)形式運(yùn)行。此時(shí)可以通過(guò)添加-d參數(shù)來(lái)實(shí)現(xiàn)。

      docker run -d [opation...]

[root@docker ~]# docker run --name daemon -d centos /bin/bash          
6fd939dd05004e18248e04d10de88076c61878aea904093e24e122a907371234

   * 查看正在運(yùn)行的容器

        docker ps

[root@docker ~]# docker ps


   * 查看所有容器

[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS                        PORTS                                                              NAMES
65c0868177e7        centos                             "/bin/bash"              34 seconds ago      Exited (0) 32 seconds ago                                                                        daemon



   * 停止正在運(yùn)行的容器

     docker stop  容器名稱或唯一容器ID [容器ID通過(guò)ps CONTAINER ID 查看]

[root@docker ~]# docker stop daemon
daemon


   * 刪除已停止的容器

     docker rm 容器名稱或唯一容器ID [容器ID通過(guò)ps CONTAINER ID 查看]

[root@docker ~]# docker rm daemon
daemon

 




8. 總結(jié)



以需求驅(qū)動(dòng)技術(shù),技術(shù)本身沒(méi)有優(yōu)略之分,只有業(yè)務(wù)之分。


  




向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI