Docker 來點好玩的

通過上篇docker入門後,確定有點抱怨,仍是沒有體驗到docker的威力。如今咱們來點好玩的。html

裝個ubuntu

之前咱們裝ubuntu,都是要費老大的力氣,有了docker,咱們裝個ubuntu玩玩。linux

docker run -t -i ubuntu:14.04 /bin/bash

好了,你裝好了ubuntu了,能夠在裏面隨便玩,玩壞了!沒事,刪掉重建一個。web

這裏跟咱們以前建立啓動容器的方式不同,多了一些參數。咱們來找--help幫忙docker

docker run --help 

//截取部分
-t, --tty                         Allocate a pseudo-TTY
    --ulimit value                Ulimit options (default[])
    
-i, --interactive                 Keep STDIN open even if not attached

-t 分配一個交互終端, -i 讓咱們能輸入字符 ;兩個結合起來就能進行交互。最後/bin/bash 是讓容器ubuntu啓動時bash運行。json

爲了方便管理,咱們建立建立容器的時候,能夠初始化一個nameubuntu

docker run -t -i --name robin_test ubuntu:14.04 /bin/bash

image
最後面能夠看到名字變了,以前咱們都沒有初始化名字,docker會幫咱們隨機生成一個。name 是惟一的,當第二次執行上面耳朵命令,會失敗,由於容易裏已經存在robin_test這個容器。瀏覽器

如何退出了? 直接Ctrl + d 或者 exit 就能退出了,docker ps 查看,發現剛纔運行的容器沒有運行,Ctrl + d 退出,容器也會中止運行。tomcat

退出了,怎麼讓剛纔的容器從新跑起來?bash

docker start id/name

docker ps 能夠看到,容器正在運行,有人想問,我想進入到這個ubuntu容器裏去啊!怎麼作?app

docker attach id/name

後臺運行,日誌

咱們在實際開發中,通常不會run的時候就登錄到容器裏去,而是把應用部署到容器裏,之後臺保護進程來運行。

docker run -t -i -d --name robin_test ubuntu:14.04 /bin/bash

//在原來額基礎上加上-d參數就行, daemon (守護)
// 爲了你之後想登錄進去,我加上了 -t  -i 交互參數

問題來了,個人應用佈置上去了,我怎麼看運行狀態啊!就是docker的日誌。爲了方便演示,咱們建立啓動一個新容器,讓他一直打印helloWorld

啓動一個新容器

docker run --name loop -d ubuntu:14.04 /bin/sh -c "while [ true ]; do echo helloWorld; sleep 1; done"

而後執行下面的一條查看日誌,就能夠看到咱們神奇的helloWorld了

docker logs [容器名]
docker logs [容器名] -f  //實時查看
docker logs [容器名] -f --tail 100 //加上行數
docker logs [容器名] -f t --tail 0  //日誌顯示時間

image

解釋下/bin/sh -c "..." ,先來man下sh(dash) , command interpreter 指令解釋器,-c 將字符串解析成指令執行。
image

容易運行時一些系統信息

咱們常常在linux上部署應用,會查看一些系統信息,咱們也能夠查看運行容器的一些進程,cpu內存使用狀況等。

  1. 先來看看進程,任然查看剛纔的loop容器

docker top loop

能夠看到
image
這裏有兩個進程,一個是while循環,一個是sleep睡眠。

  1. 再來看看應用的cpu內存一些信息

docker stats loop

能夠看到loop佔用了多少內存,多少cpu,以及io的統計。
image

不登錄容器執行command

這裏來點更有意思的,咱們運行的容器,我能不能讓他執行一些命令,但是我啓動的時候,沒有以交互方式run的,如今也登錄不進去。我想修改配置,怎麼辦啊!

哈哈!等你看完下面的,這些問題都變得so easy!!!

  1. 先來一個tomcat鏡像

docker run -d --name test -p 8080:8080 tomcat
  1. 運行docker ps 能夠看到你的tomcat已經跑起來的,並且端口有映射8080映射到主機的8080上。
    image

  2. 用瀏覽器訪問下host:8080 ,出現經典的tomcat主頁。

好戲纔開始

  1. 在tomcat的ROOT下建立一個hello.html,這裏須要用到docker exec

docker exec -d test touch /usr/local/tomcat/webapps/ROOT/hello.html

先來了解下docker exec,docker exec --help解釋爲【Run a command in a running container】在容器裏執行指令,-d 在後臺執行這個指令,test是容器名;touch /usr/local/tomcat/webapps/ROOT/hello.html這裏是容器裏須要執行的指令。

訪問下hello.html 發現能訪問,可是什麼也沒有,一個空白頁。沒錯,你只是建立了一個hello.html頁面,沒有寫入任何東西。

  1. 給你新建的文件寫點東西

docker exec test /bin/sh -c "echo helloWorld>/usr/local/tomcat/webapps/ROOT/hello.html"

在訪問下頁面,頁面上顯示helloWorld,有東西了,很爽吧!很簡單,用sh -c來執行下命令。

  1. 將文件裏的內容 cat 下

docker exec test /bin/sh -c "cat /usr/local/tomcat/webapps/ROOT/hello.html"

這裏千萬別加-d參數,否則看不到任何輸出信息。

補充:你們可能有疑惑,我怎麼知道tomcat的路徑啊!這裏先給你們引入一個查看容器詳情的指令,docker inspect,執行docker inspect test 能夠看到很長一段json格式的信息,咱們先別看那麼多,反正也看不懂,別把本身弄糊塗了!
image

如今你應該知道路徑了吧!

以交互的方式再進入運行的tomcat

docker exec -it test /bin/bash

好了,進入到了交互界面了,退出的話直接exit就行,可是容器是沒有中止的。

以前咱們run的時候能夠以交互模式進入的,退出容器也中止了,不推薦。這裏咱們小總結下:啓動images的時候,以-d守護進程啓動,而後進入交互裏的數,就docker exec -it test /bin/bash方式。

今天先到這了,接下來你能夠去好好裝逼了,下期再見。

相關文章
相關標籤/搜索