通過上篇docker入門後,確定有點抱怨,仍是沒有體驗到docker的威力。如今咱們來點好玩的。html
之前咱們裝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
最後面能夠看到名字變了,以前咱們都沒有初始化名字,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 //日誌顯示時間
解釋下/bin/sh -c "..." ,先來man下sh(dash) , command interpreter 指令解釋器,-c 將字符串解析成指令執行。
咱們常常在linux上部署應用,會查看一些系統信息,咱們也能夠查看運行容器的一些進程,cpu內存使用狀況等。
先來看看進程,任然查看剛纔的loop容器
docker top loop
能夠看到
這裏有兩個進程,一個是while循環,一個是sleep睡眠。
再來看看應用的cpu內存一些信息
docker stats loop
能夠看到loop佔用了多少內存,多少cpu,以及io的統計。
這裏來點更有意思的,咱們運行的容器,我能不能讓他執行一些命令,但是我啓動的時候,沒有以交互方式run的,如今也登錄不進去。我想修改配置,怎麼辦啊!
哈哈!等你看完下面的,這些問題都變得so easy!!!
先來一個tomcat鏡像
docker run -d --name test -p 8080:8080 tomcat
運行docker ps 能夠看到你的tomcat已經跑起來的,並且端口有映射8080映射到主機的8080上。
用瀏覽器訪問下host:8080 ,出現經典的tomcat主頁。
在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頁面,沒有寫入任何東西。
給你新建的文件寫點東西
docker exec test /bin/sh -c "echo helloWorld>/usr/local/tomcat/webapps/ROOT/hello.html"
在訪問下頁面,頁面上顯示helloWorld,有東西了,很爽吧!很簡單,用sh -c來執行下命令。
將文件裏的內容 cat 下
docker exec test /bin/sh -c "cat /usr/local/tomcat/webapps/ROOT/hello.html"
這裏千萬別加-d參數,否則看不到任何輸出信息。
補充:你們可能有疑惑,我怎麼知道tomcat的路徑啊!這裏先給你們引入一個查看容器詳情的指令,docker inspect,執行docker inspect test 能夠看到很長一段json格式的信息,咱們先別看那麼多,反正也看不懂,別把本身弄糊塗了!
如今你應該知道路徑了吧!
docker exec -it test /bin/bash
好了,進入到了交互界面了,退出的話直接exit就行,可是容器是沒有中止的。
以前咱們run的時候能夠以交互模式進入的,退出容器也中止了,不推薦。這裏咱們小總結下:啓動images的時候,以-d守護進程啓動,而後進入交互裏的數,就docker exec -it test /bin/bash方式。
今天先到這了,接下來你能夠去好好裝逼了,下期再見。