国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

圖表君聊Docker-Container

paney129 / 3473人閱讀

摘要:利用鏡像創(chuàng)建并啟動一個容器分配一個文件系統(tǒng),并在只讀的鏡像層外層掛接一個寫讀寫層。容器的啟動過程,對于理解容器至關(guān)重要,需要深入的理解。同時,對于終止?fàn)顟B(tài)的容器,我們可以采用來啟動。歡迎訂閱我的公眾號,第一時間獲取圖表君的新文章。

上篇文章我們介紹了Docker三大概念中的Image,這篇我們來介紹Container,上篇文章中我們了解到了Image是運行在Container中的,實際上在容器里跑的指令都是在Container中run的。

啟動容器

啟動容器的方法一般有兩種:

基于一個Image重新啟動一個新的容器

啟動一個現(xiàn)在已經(jīng)是在Stopped狀態(tài)下的容器。
來試著運行下邊的這個命令:

    docker run ubuntu /bin/echo "Hello Docker"
    Hello Docker

有沒有感覺和本地執(zhí)行 echo ‘Hello Docker’ 的速度沒什么差別?但是其實人家是在一個Container里運行的啊。想想之前用VM的情況,啟動一個instance得2分鐘,所要執(zhí)行的Job只有幾秒而已。如果同樣的Job放到docker里跑,那會快多了,太爽快了。

所以一般用戶在使用容器的時候都是隨時新建和刪除容器的。

上邊那個例子是我們用docker 運行了一個輸出語句,下面我們來看這樣一個例子:

    docker run -t -i ubuntu /bin/bash
    root@42099bcd8196:/# ls
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

這樣進入了一個docker container 并運行l(wèi)s命令。-t讓docker分配一個偽終端綁定到容器的標(biāo)準(zhǔn)輸入上, -i讓容器的標(biāo)準(zhǔn)輸入一直打開。

容器的啟動過程

那么一個容器的啟動到底經(jīng)歷那些過程呢:

檢查images如果本地不存在就是從遠(yuǎn)程倉庫下載。

利用鏡像創(chuàng)建并啟動一個容器

分配一個文件系統(tǒng),并在只讀的鏡像層外層掛接一個寫讀寫層。

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

分配一個ip地址給容器

運行用戶給定的應(yīng)用程序

運行完畢,容器被終止。

容器的啟動過程,對于理解容器至關(guān)重要,需要深入的理解。

使用docker ps -al查看所有的歷史,使用docker start可以啟動一個已經(jīng)終止的容器。

后臺運行

添加 -d參數(shù)可以后臺運行docker container

    docker run -d ubuntu  /bin/bash -c "while true; do echo hello docker; sleep 2; done"

這樣我們就看不到容器的輸出信息了,可以通過docker logs來查看

docker logs [container ID or NAME]

like this

docker logs 133e58dbdc78
hello docker
hello docker
hello docker
hello docker
...
停止容器

要停止一個容器也是相當(dāng)簡單的,docker stop就能辦到了。同時,對于終止?fàn)顟B(tài)的容器,我們可以采用docker start 來啟動。通過docker restart來重啟這個容器。

docker stop [CONTAINER ID OR NAME]
進入容器

當(dāng)我們使用 -d參數(shù)運行了一個Container的時候,有時候我們需要進入這個容器進行一些操作。例如有這樣的一個情況,我們運行了一個app在一個容器里,我們想進入容器看看,這個app運行的狀態(tài),查看log。那們?nèi)绾芜M入呢?其實有很多種方法,這里介紹兩種。
第一:

    docker attach [CONTAINER ID OR NAME]
$ docker run -d --name topdemo ubuntu /usr/bin/top -b
$ docker attach topdemo

top - 02:05:52 up  3:05,  0 users,  load average: 0.01, 0.02, 0.05
Tasks:   1 total,   1 running,   0 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.2%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    373572k total,   355560k used,    18012k free,    27872k buffers
Swap:   786428k total,        0k used,   786428k free,   221740k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1 root      20   0 17200 1116  912 R    0  0.3   0:00.03 top

這里我們使用了attach命令進入了容器,看到了top命令的輸出。

回到我剛才說的那個例子,如果有個Container后臺里執(zhí)行的是一個webapp,如何看到logs 或者是輸出呢?接下來具體說說。

docker run -d --name webapp -p 5000:5000 training/webapp

在執(zhí)行了這個命令后,我們在后臺run了一個images為training/webapp的Container(這是一個python的flask app)我們將本機的5000端口與Container的5000端口(flask的默認(rèn)端口)進行了mapping。當(dāng)我們從Browser訪問的時候,我們就能訪問到這個app。

當(dāng)我們在本地開發(fā)的時候,我們很容易的可以從console里看到,這個app的訪問的記錄,同時也能方便的查看log文件。那么這些在容器里怎么進行呢?當(dāng)然我們可以使用上邊介紹的attach命令。

docker attach webapp

當(dāng)從瀏覽器訪問這個app的時候,通過attach我們可以看到Container里的輸出。

docker attach webapp
172.17.0.1 - - [04/Oct/2016 04:44:23] "GET / HTTP/1.1" 200 -
172.17.0.1 - - [04/Oct/2016 04:44:24] "GET / HTTP/1.1" 200 -

但是問題來了,如果我們要看log文件,或者想進入Container,看看其他的文件狀態(tài),該怎么辦呢?那么這時候我們就會用到 docker exec了。

    docker exec -it webapp /bin/bash
    root@e0cac87036f0:/opt/webapp# ls
    Procfile  app.py  requirements.txt  tests.py
    root@e0cac87036f0:/opt/webapp#

通過docker exec我們就在這個Container里又運行了bash,這時候我們就能做其他我們想做的事情了。

那么docker attachdocker exec有什么區(qū)別呢?

docker attach 讓用戶可以進入Container查看輸出等等操作,但是并不會另外啟動一個進程! 如果你用CTRL-c來退出,同時這個信號會kill Container(默認(rèn)情況)

docker exec 會啟動另外一個進程來進入Container,這里的操作是在這個進程下的。如果你用CTRL-c來退出,不會kill 原來的Container

好了,對于Container今天就聊到這里,下片文章我們繼續(xù)聊最后一個概念,Docker倉庫。


歡迎訂閱我的公眾號,第一時間獲取圖表君的新文章。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26732.html

相關(guān)文章

  • 圖表君聊Docker-開篇

    摘要:圖表君聊開篇今天是圖表君聊的第一篇,為什么會有這個系列呢容器技術(shù)出現(xiàn)已經(jīng)有一段時間了,之前零零星星的也看過一些文章,圖表君的項目上也在使用。至于,圖表君沒試過,官網(wǎng)有的教程,大家可以參考。上的官網(wǎng),安裝,然后跟著圖表君一起學(xué)習(xí)吧。 圖表君聊Docker-開篇 今天是圖表君聊Docker的第一篇,為什么會有這個系列呢?容器技術(shù)Docker出現(xiàn)已經(jīng)有一段時間了,之前零零星星的也看過一些文章...

    z2xy 評論0 收藏0
  • 圖表君聊docker-倉庫

    摘要:圖表君聊倉庫今天我們來繼續(xù)聊,上篇文章我們介紹了里的今天來繼續(xù)三大概念中的最后一個倉庫。這個倉庫可以是一個私有的倉庫,供一個內(nèi)部使用。目前官方維護一個公共倉庫里邊有大量的,可以滿足我們的大部分需求。原創(chuàng)文章,歡迎轉(zhuǎn)發(fā),但請標(biāo)明出處。 圖表君聊docker-倉庫 今天我們來繼續(xù)聊docker,上篇文章我們介紹了docker里的Container.今天來繼續(xù)三大概念中的最后一個--倉庫(R...

    justCoding 評論0 收藏0
  • 圖表君聊docker-Dockerfile

    摘要:圖表君聊前邊幾篇文章給大家介紹了的三大基本概念。維護者的信息是圖表君當(dāng)前目錄到容器中的目錄下指定工作路徑為安裝依賴暴露端口啟動創(chuàng)建鏡像編寫好后,就可以使用來了。歡迎訂閱我的公眾號,第一時間獲取圖表君的新文章。 圖表君聊docker-Dockerfile 前邊幾篇文章給大家介紹了docker的三大基本概念。可能大家覺得概念的東西比較生澀,有沒有更多實戰(zhàn)的例子呢?好了,從這篇文章開始,我會...

    FingerLiu 評論0 收藏0
  • 圖表君聊Docker-images

    摘要:當(dāng)運行這條命令的時候,實際上是從上來請求標(biāo)記為的,當(dāng)然由于眾所周知的原因,的速度會很慢。運行下邊這條命令,我們就可以清理下了。歡迎訂閱我的公眾號,第一時間獲取圖表君的新文章。 上篇文章我們介紹了docker的歷史由來帶來的一些好處,從這篇文章開始,我們開始正式的進入Docker的世界,首先給大家介紹一下Docker一些基本概念。 Docker的基本概念 Docker的基本概念并不是很多...

    haobowd 評論0 收藏0
  • Docker-container詳解

    本文介紹docker中的contanier,基于操作系統(tǒng)介紹什么是container。進程(Processes)Container是具有指定配置的Linux進程(processes)。我們進行如下操作: ##啟動一個redis進程 ?~dockerrun-d--name=dbredis:alpine ##顯示容器運行的進程 ?~dockertopdb PIDUSERTIMECOMMA...

    社區(qū)管理員 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<