docker 入門學習一

jopen 8年前發布 | 16K 次閱讀 Docker

基本概念

  • 鏡像(image):Docker 鏡像就是一個只讀的模板。一個鏡像可以包含一個完整的 ubuntu 操作系統環境,里面僅安裝了 Apache 或用戶需要的其它應用程序。鏡像可以用來創建 Docker 容器。
  • 容器(container):容器是從鏡像創建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。
  • 倉庫(repository):倉庫是集中存放鏡像文件的場所。
  • </ul>

    鏡像

    獲取鏡像

    docker pull ubuntu:12.04
    與下面的命令等同
    docker pull registry.hub.docker.com/ubuntu:12.04
    如果官方倉庫比較慢可以用其他倉庫
    docker pull dl.dockerpool.com:5000/ubuntu:12.04

    使用該鏡像創建容器:

    docker run -t -i ubuntu:12.04 /bin/bash
    root@fe7fc4bd8fc9:/#

    列出本地鏡像

    docker images
    REPOSITORY       TAG      IMAGE ID      CREATED      VIRTUAL SIZE
    ubuntu           12.04    74fe38d11401  4 weeks ago  209.6 MB
    ubuntu           precise  74fe38d11401  4 weeks ago  209.6 MB
    ubuntu           14.04    99ec81b80c55  4 weeks ago  266 MB

    在列出信息中,可以看到幾個字段信息:

    • 來自于哪個倉庫,比如 ubuntu
    • 鏡像的標記,比如 14.04
    • 它的 ID 號(唯一)
    • 創建時間
    • 鏡像大小
    • </ul>

      創建鏡像

      啟用一個下載的鏡像的容器:

      docker run -t -i training/sinatra /bin/bash
      root@0b2616b0e5a8:/#
      root@0b2616b0e5a8:/# gem install json

      //提交當前容器

      docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2 4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c</pre>

      • -m :指定提交的說明信息
      • -a :指定更新的用戶信息
      • 0b2616b0e5a8 是用來創建鏡像的容器的 id
      • 最后指定目標鏡像的倉庫名和 tag 信息。創建成功后會返回這個鏡像的 ID 信息。
      • </ul>

        移除本地鏡像

        如果要移除本地的鏡像,可以使用 docker rmi 命令。注意 docker rm 命令是移除容器。

        docker rmi training/sinatra
        Untagged: training/sinatra:latest
        Deleted: 5bc342fa0b91cabf65246837015197eecfa24b2213ed6a51a8974ae250fedd8d
        Deleted: ed0fffdcdae5eb2c3a55549857a8be7fc8bc4241fb19ad714364cbfd7a56b22f
        Deleted: 5c58979d73ae448df5af1d8142436d81116187a7633082650549c52c3a2418f0

        注意:在刪除鏡像之前要先用 docker rm 刪掉依賴于這個鏡像的所有容器。

        容器

        啟動容器

        啟動容器有兩種方式,一種是基于鏡像新建一個容器并啟動,另外一個是將在終止狀態(stopped)的容器重新啟動。

        docker run ubuntu:14.04 /bin/echo 'Hello world'
        Hello world

        下面的命令則啟動一個 bash 終端,允許用戶進行交互。

        docker run -t -i ubuntu:14.04 /bin/bash
        root@af8bae53bdd3:/#

        • -t :選項讓Docker分配一個偽終端(pseudo-tty)并綁定到容器的標準輸入上
        • -i :則讓容器的標準輸入保持打開。
        • </ul>

          當利用 docker run 來創建容器時,Docker 在后臺運行的標準操作包括:

          • 檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載
          • 利用鏡像創建并啟動一個容器
          • 分配一個文件系統,并在只讀的鏡像層外面掛載一層可讀寫層
          • 從宿主主機配置的網橋接口中橋接一個虛擬接口到容器中去
          • 從地址池配置一個 ip 地址給容器
          • 執行用戶指定的應用程序
          • 執行完畢后容器被終止
          • </ul>

            啟動已終止容器

            可以利用 docker start 命令,直接將一個已經終止的容器啟動運行。

            可以通過 docker ps 命令來查看容器信息。

            docker ps
            CONTAINER ID  IMAGE         COMMAND               CREATED        STATUS       PORTS NAMES
            77b2dc01fe0f  ubuntu:14.04  /bin/sh -c 'while tr  2 minutes ago  Up 1 minute        agitated_wright

            可以使用 docker stop 來終止一個運行中的容器。

            此外,docker restart 命令會將一個運行態的容器終止,然后再重新啟動它。

            倉庫

            用戶無需登錄即可通過 docker search 命令來查找官方倉庫中的鏡像,并利用 docker pull 命令來將它下載到本地。

            docker search centos
            INDEX       NAME                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
            docker.io   docker.io/centos                            The official build of CentOS.                   1823      [OK]
            docker.io   docker.io/jdeathe/centos-ssh                CentOS-6 6.7 x86_64 / EPEL/IUS Repos / Ope...   14                   [OK]
            docker.io   docker.io/jdeathe/centos-ssh-apache-php     CentOS-6 6.7 x86_64 / Apache / PHP / PHP m...   11                   [OK]
            docker.io   docker.io/million12/centos-supervisor       Base CentOS-7 with supervisord launcher, h...   9                    [OK]
            docker.io   docker.io/blalor/centos                     Bare-bones base CentOS 6.5 image                8                    [OK]
            docker.io   docker.io/nimmis/java-centos                This is docker images of CentOS 7 with dif...   7                    [OK]
            docker.io   docker.io/torusware/speedus-centos          Always updated official CentOS docker imag...   7                    [OK]

            【參考資料】

            1. Docker從入門到實踐
            2. </ol>

              ---EOF---

              </article>

              來自: http://renchx.com/docker1/

              </code></code></code></code></code></code></code></code></code>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!