Docker基礎:查找鏡像和運行容器

【摘要】本文是作者學習Docker的筆記,涉及在Windows上的安裝,介紹了鏡像和容器的知識和基本操作,適合Docker初學者。

介紹

也許你已經聽說過Docker,這裡我不打算深入介紹Docker是什麼以及它的工作原理。如果你從未聽說過Docker,這篇文章會幫助你熟悉Docker。如果你了解Docker的話我們從一些基本的功能說起:鏡像和容器以及如何使用它們解決真實場景中的問題,比如想要學習一門很棒的語言又不希望花太多時間在安裝語言和環境搭建上。

繼續之前,需要說明三點:

  1. 這個系列是關於基本操作的,目的在於介紹概念,為深入學習做鋪墊。

  2. 我並不是這個領域的專家,甚至也不高級。實際上我是初學者並且也沒有在任何重要項目中使用過Docker。我想看到后一句話很多人已經不打算看了。

    Advertisements

  3. 我正在使用Windows系統,所以我的操作是在Windows上進行的。這並不意味著你不能在Mac或Linux上參考本文,實際上只有安裝部分不同,其餘的應該是一樣的。

安裝

參考官方安裝指導,如果是Windows,會有兩個選項:直接安裝Docker或者Docker Toolbox(Docker工具箱)。需要注意新版本Docker需要64-bit Windows 10 Pro並且支持Microsoft Hyper-V。如果你的Windows版本比較老,安裝Toolbox,它兼容Oracle Virtual Box。

當使用新版本Docker時,你會得到提示:

如果你使用Docker Toolbox,會有很多工具,其一是Docker Quickstart Terminal。

Advertisements

如果安裝原生的Docker,你可以在最愛的終端中運行Docker命令,如果是Toolbox,在Quickstart Terminal中輸入命令。

另一件需要注意的點在於,原生安裝Docker時通過localhost訪問容器中的webapps,如果是Toolbox,你需要注意啟動Quickstart Terminal時的輸出信息,它會給你容器的IP,在我的電腦上是192.168.99.100。

快速總結下,在Windows上你有兩個選擇:

  1. 原生Docker,你需要64-bit Windows 10 Pro並且支持Microsoft Hyper-V,你會有Docker的系統圖標,能在任何終端中輸入Docker命令

  2. Docker Toolbox,你的Windows版本低時的選擇。需要安裝Oracle Virtual Box,啟動Quickstart Terminal后輸入Docker命令。

使用

假設一個簡單但是貼近現實的例子:學習基於JVM的語言Scala。在成為專家前,你總是需要學習很多新的知識,你要參考很多基本的入門指南,需要一個REPL執行操作,但是你不希望在自己的電腦上下載安裝Scala。那麼如何使用Docker解決這個問題?很簡單,你只需要運行一個包含Scala和相關依賴的容器即可。

如果你是開發者,可以很容易理解鏡像和容器的區別,容器相對於鏡像就像對象相對於類。

鏡像是從網路上下載的不可變文件,它描述了如何構建特定的容器。它們可能很大,所以要分模塊構建以便在網路上傳輸。容器是鏡像的實例,Docker啟動容器后執行鏡像中指定的指令。

在我們的例子中,我們需要搜索Scala鏡像並啟動容器。

搜索鏡像

兩個選項,直接在Google搜索Scala docker image或者運行命令docker search scala。

我們以上圖中第一個鏡像為例,可以登錄docker hub(https://hub.docker.com/r/hseeberger/scala-sbt)了解它的詳細信息。

如何啟動容器

啟動容器的命令是:

docker run -it hseeberger/scala-sbt

運行docker run --help可以查看更詳細的信息:

  1. -i表示互動式,STDIN會被開啟,即使我們沒有附著到容器上

  2. -t表示tty,我們會得到一個偽tty與容器交互

-it經常結合在一起使用。run命令運行結束后你會看到如下內容:

root@3d5b83c7ea03:~#

做了這麼多麻煩事就得到一個命令行提示符?顯然不,這裡你得到的新容器的shell,時刻準備接收命令。如果執行ls,會看到一個scala-2.12.2目錄,我們進入這個目錄然後執行scala,然後得到scala REPL,在這裡就可以實戰學習scala了。Ctrl+C退出REPL,exit退出容器。

如何做得更好

我們可以使用第二個鏡像,然後直接運行docker run -it williamyeh/scala命令就可以得到scala REPL了。為何運行兩個鏡像得到不同的結果?我會在下一篇文章中介紹。

總結一下,運行容器只需要簡單運行命令docker run -it your/image,運行的容器會做什麼取決於你的鏡像了。

有用的命令

  1. docker ps:列出所有正在運行的容器

  2. docker image ls:列出所有的鏡像

  3. docker stop <name>:暫停容器

  4. docker rm <name>:刪除容器

Advertisements

你可能會喜歡