十分鐘入門Docker,帶你成爲Docker王者之篇二

上一篇文章『十分鐘入門Docker,帶你成爲Docker王者之篇一』給你們講了一下 Docker 怎麼安裝和運行,那麼這一篇文章,咱們着重講解一下怎樣可以快速的掌握Docker經常使用命令python

做業講解

上一期在文末留了一個做業,不知道你們是否跑起來了?git

題目
若是你已經成功安裝好了 Docker,不妨試一試皮爺的 Docker Image 跑起來的效果: docker

$ docker run swyftg/3dmspider複製代碼

若是你們正常運行起來了,那麼這個 Docker Image 的做用,就是爬取 https://www.3dmgame.com/ 網站的遊戲資訊,具體的爬蟲代碼能夠關注公號『皮爺擼碼』,回覆『代碼』,其中 DC001 就是 Docker 的爬蟲代碼地址,有興趣的同窗能夠去學習一下源碼。bash

那麼這個 Image 運行起來的樣子就是這樣:app

神奇不?哈哈哈,你看,你不須要配置Python,Scrapy的運行環境,也不須要安裝Python的依賴,只須要安裝Docker,就能夠玩轉Scrapy爬蟲。注意,Docker不只僅只限於爬蟲,任何都適用,皮爺這裏只是給作一個Docker Image的展現而已。ide

這裏要再次回顧一下上篇文章的一段話:學習

  1. Docker就像是你電腦裏面安裝了一個冰箱,這個冰櫃提供製做形狀各異的雪糕模具(這個就是鏡像Image),而後你能夠用這些模具來製做各類各樣的雪糕(雪糕也就是container)。作出來的雪糕,支持訪問,能夠查看雪糕內部的各類結構。
  2. 經過Docker,你能夠將本身的雪糕模具給了其餘的小夥伴或者上傳到網上,而後其餘的小夥伴能夠用你的模具,在他的電腦裏面的冰櫃(Docker)中,就能夠製做出來和你的如出一轍的雪糕。

因此,Docker 玩的最核心的其實就是兩個東西: Container(容器)Image(鏡像)

那麼接下來,皮爺就給你們來講一下 Docker 裏面,最最最最最工做化和經常使用的幾條命令。網站

0x00_內功心法:$ docker [xxx] --help

學習全部招式以前,先學一個內功心法。最關鍵的一個:--help 關鍵字。這個關鍵字能夠用在任何命令以後,若是對 docker 的命令不清楚怎麼用,就能夠加 --help 命令來查看幫助文檔。好比:ui

  • docker
    不知道怎麼用?? 經過 docker --help 查看啊。
  • docker ps
    不知道怎麼用?? 經過 docker ps --help 查看啊。
  • docker image
    不知道怎麼用?? 經過 docker image --help 查看啊。
  • docker run
    不知道怎麼用?? 經過 docker run --help 查看啊。

學完心法,咱們來看學習招式。spa

0x01_左手容器:$ docker ps 系列

在這個命令基礎下,主要玩的是這麼幾條命令:

  • $ docker ps
  • $ docker ps -a
  • $ docker rm
  • $ docker stop
  • $ docker start
  • $ docker restart
  • $ docker logs

>$ docker ps

這個命令是最基本的命令,在 Docker 運行起來的時候,這個命令能夠羅列出全部正在運行的容器(Containers)

>$ docker ps -a

這個命令只是在上一個命令的基礎之上,加了一個 -a 參數,它能夠羅列出來全部的容器,包括正在運行的已經中止的。中止的容器通常有兩種狀況:一種是運行出錯,另外一種是運行完畢。

>$ docker rm [OPTIONS] CONTAINER [CONTAINER…]

rm命令,通常都是刪除命令。這條命令在 rm 後面,跟選擇參數或者直接跟一個或者多個容器的ID。做用就是將容器刪除。

這條命令頗有用,好比你須要刪除一個鏡像(Image),可是系統提示你刪除失敗:由於有容器正在使用鏡像。那麼你須要先刪除使用鏡像的容器(容器多是運行狀態,也多是stop的狀態,經過$ docker ps -a命令來查看容器狀態),這裏就須要用到這個$ docker rm xxxx命令了。

我這裏在上面的例子中執行一下,給你們看一下效果:

上面這個圖,咱們從上往下看:

  • 第一個紅框,列出了三條容器信息;
  • 第二個紅框,咱們選擇刪除第二個容器;
  • 第三個紅框,能夠看到剛纔的容器被刪除了。

>$ docker stop [OPTIONS] CONTAINER [CONTAINER…]

stop命令則是將運行中的容器中止掉。

要問啥是運行中的容器? ----- 經過$ docker ps命令列出來的就是運行中的容器。

那麼咱們只須要把要中止的容器的ID號填寫到 stop 後面就能夠了。一次能夠中止一個ID或者中止多個ID

上面這個圖,咱們從上往下看:

  • 第一個紅框,看到 $ docker ps 命令列出來了正在運行的容器。
  • 第二個紅框,咱們經過 $ docker stop 命令,來中止容器。這裏咱們只去了ID的前幾位來表示容器的ID,Docker是支持這樣簡化操做的,前提是縮寫ID沒有歧義
  • 第三個紅框,咱們發現經過 $ docker ps 命令看不到剛纔那個容器了,由於這個命令羅列出來都是運行中的容器。
  • 第四個紅框,看到經過 $ docker ps -a 命令羅列出來全部的容器,發現剛纔的那個容器已經被關閉了。

>$ docker start [OPTIONS] CONTAINER [CONTAINER…]

>$ docker restart [OPTIONS] CONTAINER [CONTAINER…]

這倆命令,使用形式和上面的 $ docker stop 命令如出一轍,只不過一個是 start 表示 讓容器運行;另外一個是 restart 表示 讓容器重啓。具體作法不介紹了,很簡單。

>$ docker logs [OPTIONS] CONTAINER

哈哈,這個是查看容器 log 的命令,也算是一個很關鍵件的指令。logs 後面只須要加容器的ID就能夠。注意,這裏和上面的指令不同,這裏一次只能查看一個容器的Log,後面不能跟多個容器的ID。

上面這個圖,咱們從上往下看:

  • 第一個紅框,看到 $ docker ps -a 命令列出來全部的容器。
  • 第二個紅框,咱們經過 $ docker logs ID 來看到那個 3dmspider 容器的log,其實就是咱們 Scrapy 爬蟲的log。

0x02_右手鏡像:$ docker images 系列

在這個命令基礎下,主要玩的是這麼幾條命令:

  • $ docker search
  • $ docker images
  • $ docker image rm
  • $ docker image history
  • $ docker image build
  • $ docker image pull
  • $ docker image push

>$ docker search [OPTIONS] TERM

這個命令的主要功能是搜索dockerhub裏面現成的鏡像(Image)。後面的Term就是搜索的關鍵字。

好比搜索 Ubuntu 的鏡像:

能夠看到上面搜索出來好多鏡像,並且後面還有 StartOfficial 認證。

再好比搜索上節課皮爺的給你們留的做業的鏡像:

就一條數據,哈哈哈哈。只要搜索到鏡像(Image),你就可使用這個鏡像了。

>$ docker images

這個命令要注意一下,Images複數,後面加着s呢。這個命令主要就是羅列出來你本地已經下載好的或者是建立的 docker iamge。

從上面的圖咱們看到,我本地只有四個鏡像。爲啥要說這個命令呢?由於這個命令和後面的 rm 命令關聯,咱們可以在這個命令裏面找到鏡像的ID。

>$ docker image rm [OPTIONS] IMAGE [IMAGE…]

這個命令主要就是來刪除本地Image使用的。一次能夠刪除一個或者多個Image。後面的Image ID就是從上面的那個命令裏面看到的。

這是個很是好的例子,上面這個圖,咱們從上往下看:

  • 第一個紅框,看到 $ docker images 命令列出來全部的鏡像。
  • 第二個紅框,咱們要經過 $ docker image rm xxx 命令來刪除一個 Image,發現刪除失敗,報錯了。由於有容器正在使用這個Image。
  • 第三個紅框,咱們須要經過上面的提到的 $ docker ps -a 命令來查看是哪一個容器在使用。
  • 第四個紅框,把那個已經中止的容器經過rm命令刪掉。
  • 第五個紅框,再次經過 $ docker image rm xxx 命令來刪除剛纔要刪除的那個鏡像。
  • 第六個紅框,再次經過 $ docker images 命令羅列本地鏡像,發現那個鏡像已經被成功刪除。

$ docker image rm命令掌握到這個程度就能夠了。

>$ docker image history [OPTIONS] IMAGE

這個history命令,顧名思義,就是把Image的歷史記錄羅列出來。

這裏能夠看得很清楚,咱們的這個 image到底發生過怎樣的便籤。其實這個功能有點像 Git 中的 git log 其實仍是和 image push/pull 功能相關的,這倆功能都和修改 Image 有關, histroy 就是來查看修改記錄了。

>$ docker image pull [OPTIONS] NAME[:TAG|@DIGEST]

這個簡單提一下,就是拉取鏡像的。

>$ docker image push [OPTIONS] NAME[:TAG]

上一個是拉鏡像,這個就是push鏡像。

>$ docker image build

這個命令很關鍵,可是咱們這一期先不講,build 命令主要是要結合:1. 本地的代碼;2. 你所寫的 Dockerfile。 這兩個東西來建立你的Image。怎樣寫Dockerfile,怎樣Build, 咱們下一篇說。

0x03_中間雄起:$ docker run

Run 方法但是不得了。這個能夠說是 Docker 的核心中的核心。若是要學要用起來,其實也不難,掌握好如下幾個方法就好:

  • $ docker run swyftg/3dmspider
  • $ docker run 43b6fb877481
  • $ docker run -t -i python:3.6
  • $ docker run -t -i ububtu /bin/bash

恩恩,就這麼幾個基本徹底夠用了。咱們一個一個的說。

>$ docker run swyftg/3dmspider

>$ docker run 43b6fb877481

這兩個其實很相近,run 後面能夠跟 Image 的倉庫名字或者 Image 的ID。若是是倉庫名字,還能夠在名字後面添加版本號。

咱們看到,直接跟着 Image ID,就能夠運行起來。並且打印出來的Log也確實是Scray的log。

>$ docker run -t -i python:3.6

這個命令主要是 -t-i 這兩個參數:

  • -t:在新容器內指定一個僞終端或終端。
  • -i:容許你對容器內的標準輸入 (STDIN) 進行交互。

其實這倆通常是一塊兒使用。就好比下面這個:

看到沒?只須要經過一個 Docker 的 Python 3.6 的 Image ,就能夠在你的電腦上面將 Python3 跑起來。

>$ docker run -t -i ububtu /bin/bash

這個是在上一個命令的基礎上,更加進一步的操做,就是在 倉庫名字或者Image ID 後面,添加了 /bin/bash 運行程序的路徑名字。

通常若是是Linux的Image,或者你的程序根Image是用的Linux,嚐嚐會運行 /bin/bash ,經過這種方式,你能夠查看 Image 裏面的文件究竟是怎麼回事兒了。

0x04_做業小練習

做業很簡單,字數不多:朗讀並背誦全文。 哈哈哈,字數越少事兒越大,這幾個字是否是很是恐怖?

咱們這一篇文章主要講了 Docker 中經常使用的命令,來管理 ImageContainer,同時還說了一下 Run 命令。Docker 還有其餘命令,感興趣的能夠經過咱們最開始教的內容口訣 $ docker --help 來看那些命令怎麼玩。

喜歡的能夠關注公號『皮爺擼碼』,回覆『代碼』,其中DC001就是 Docker 系列的代碼,你們能夠學習一下。

你們幫忙點個右下角的好看唄,你這麼帥,不點好看怎麼過去啊。

相關文章
相關標籤/搜索