新手學Docker(1)Hello World

Docker從哪兒下載?

因爲咱們訪問Docker官網通常狀況下會很是慢,因此咱們不得不把目光投向國內的鏡像站,還好,DaoCloud爲咱們掃清了一系列障礙,點擊前往html

你只須要如下步驟:前端

  • 註冊一個DaoCloud帳號nginx

  • 進入下載頁面,根據本身的系統下載合適的鏡像包git

  • 安裝完成後配置Docker加速器docker

  • 打開命令行,執行docker version,觀察Docker是否安裝成功shell

入門錦囊

名詞解釋

  • Imagecentos

    • Image是一堆文件的集合體,從用戶角度來看,它是一個鏡像包,它的特徵是隻讀的,它是別人(或者咱們本身)構建好的一個環境,在Docker世界裏,咱們會常常尋找第三方包,來支持咱們的工做,如nginx,centos,咱們不修改它,咱們基於它實例出的container進行工做。bash

  • container服務器

    • Image是隻讀的,咱們是不可能也不必去修改Image的,咱們要作的就是實例化Image,即稱爲container,咱們所作的修改都是基於container的,如圖所示,container其實就是Image的一份拷貝,可是多了一部分可讀寫的區域,咱們就是對這部分進行加工處理的,container其實也是一系列文件,真正支持咱們交互的是Running container,它多出了一個進程,此進程提供咱們與container讀寫區域溝通的途徑,咱們才得以有機會運行Dockerfrontend

container通過咱們的處理就像在git倉庫裏修改了文件同樣,將修改後的container打快照固化爲Image,這即是Docker生態的流動源泉。起初,咱們可能只是一個殼子,人們陸陸續續爲其增添功能,而且固化,通過一系列的串行做業後,這個殼子鏡像凝結了前人的智慧,傲嬌地展現在咱們面前。

命令解釋

  • docker run [Image Name]

    • 檢查本地是否有Image Name

    • 若是沒有的話,則從遠端倉庫下載

    • 加載Image而且實例化container(實際上執行了 docker create && docker start

  • docker ps

    • 默認顯示當前正在運行container

    • 加上-a能夠顯示建立過的全部的container

小提示:按住Ctrl + C 能夠中斷當前前臺進程(佔用着你的Shell,讓你沒法繼續進行操做的那個進程)

Hello World 1

  1. 輸入docker run hello-world,命令行會打印如下信息

$ docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
535020c3e8ad: Pull complete
af340544ed62: Pull complete
Digest: sha256:a68868bfe696c00866942e8f5ca39e3e31b79c1e50feaee4ce5e28df2f051d5c
Status: Downloaded newer image for hello-world:latest

Hello from Docker.

執行docker ps -a,將會顯示一個列表,顯示錯亂每每是由於你的命令行工具太窄了,你能夠試着全屏顯示。咱們啓動過的全部的container將會在這裏顯示。

爲何不能直接執行docker ps?hello-world這個Image在建立好container之後,打印信息,而後自動stop這個container,因此它已經不在正在運行的container列表裏了。

Hello World 2

  • 輸入docker run centos /bin/echo 'hello world',這一步咱們不只僅啓動了一個container,還傳輸了一個命令進去執行了。

docker run centos /bin/echo 'Hello world'

    Hello world
  • 輸入docker run -it centos能夠啓動一個交互性的centos,如同你正在遠程ssh鏈接服務器。

神器容器在哪裏?

目前爲止,咱們大約執行了3次docker run命令,不過目前看來,咱們仍是回到了本身的shell進程上,那麼剛纔執行的那些容器在哪裏呢?咱們試着再次輸入docker ps -a,仔細觀察打印出的數據,咱們曾經啓動過的容器都在這兒,雖然它們都不處於運行狀態,觀察最右邊的NAMES字段,Docker會爲每個容器起一個名字,小貓小狗隨機取,若是咱們想本身起名的話,請在執行run命令時加上--name [you_define_name]參數試試看。

咱們固然也能夠再次喚醒咱們的容器們,執行docker start [container_name]便可。

咱們試着再次啓動一個容器。

# 新建一個名爲 小明 的容器
docker run -it --name xiaoming centos
# Ctrl + c 退出交互進程
docker stop xiaoming
# 查看最近建立的一個容器 -l -> latest 咱們將會看到小明被打印了
docker ps -l
# 咱們再次重啓小明,可是發現回不到命令行交互模式了
docker start xiaoming

有時候,咱們可能會有想進入容器內部,就像一直很熟悉的ssh鏈接同樣,可是在Docker裏,要儘可能規避這種想法,咱們能夠經過docker exec去實現這種需求,詳情見擴展閱讀。

擴展閱讀

相關文章
相關標籤/搜索