成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

圖表君聊Docker-Container

paney129 / 3516人閱讀

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

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

啟動(dòng)容器

啟動(dòng)容器的方法一般有兩種:

基于一個(gè)Image重新啟動(dòng)一個(gè)新的容器

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

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

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

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

上邊那個(gè)例子是我們用docker 運(yùn)行了一個(gè)輸出語(yǔ)句,下面我們來看這樣一個(gè)例子:

    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

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

容器的啟動(dòng)過程

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

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

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

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

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

分配一個(gè)ip地址給容器

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

運(yùn)行完畢,容器被終止。

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

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

后臺(tái)運(yùn)行

添加 -d參數(shù)可以后臺(tái)運(yùn)行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
...
停止容器

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

docker stop [CONTAINER ID OR NAME]
進(jìn)入容器

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

    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命令進(jìn)入了容器,看到了top命令的輸出。

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

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

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

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

docker attach webapp

當(dāng)從瀏覽器訪問這個(gè)app的時(shí)候,通過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文件,或者想進(jìn)入Container,看看其他的文件狀態(tài),該怎么辦呢?那么這時(shí)候我們就會(huì)用到 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我們就在這個(gè)Container里又運(yùn)行了bash,這時(shí)候我們就能做其他我們想做的事情了。

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

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

docker exec 會(huì)啟動(dòng)另外一個(gè)進(jìn)程來進(jìn)入Container,這里的操作是在這個(gè)進(jìn)程下的。如果你用CTRL-c來退出,不會(huì)kill 原來的Container

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


歡迎訂閱我的公眾號(hào),第一時(shí)間獲取圖表君的新文章。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26732.html

相關(guān)文章

  • 圖表君聊Docker-開篇

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

    z2xy 評(píng)論0 收藏0
  • 圖表君聊docker-倉(cāng)庫(kù)

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

    justCoding 評(píng)論0 收藏0
  • 圖表君聊docker-Dockerfile

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

    FingerLiu 評(píng)論0 收藏0
  • 圖表君聊Docker-images

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

    haobowd 評(píng)論0 收藏0
  • Docker-container詳解

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

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

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<