摘要:經(jīng)過上篇入門后,肯定有點抱怨,還是沒有體驗到的威力?,F(xiàn)在我們來點好玩的。今天先到這了,接下來你可以去好好裝逼了,下期再見。
經(jīng)過上篇docker入門后,肯定有點抱怨,還是沒有體驗到docker的威力。現(xiàn)在我們來點好玩的。
裝個ubuntu以前我們裝ubuntu,都是要費老大的力氣,有了docker,我們裝個ubuntu玩玩。
docker run -t -i ubuntu:14.04 /bin/bash
好了,你裝好了ubuntu了,可以在里面隨便玩,玩壞了!沒事,刪掉重建一個。
這里跟我們之前創(chuàng)建啟動容器的方式不一樣,多了一些參數(shù)。我們來找--help幫忙
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 讓我們能輸入字符 ;兩個結(jié)合起來就能進行交互。最后/bin/bash 是讓容器ubuntu啟動時bash運行。
為了方便管理,我們創(chuàng)建創(chuàng)建容器的時候,可以初始化一個name
docker run -t -i --name robin_test ubuntu:14.04 /bin/bash
最后面可以看到名字變了,之前我們都沒有初始化名字,docker會幫我們隨機生成一個。name 是唯一的,當?shù)诙螆?zhí)行上面耳朵命令,會失敗,因為容易里已經(jīng)存在robin_test這個容器。
如何退出了? 直接Ctrl + d 或者 exit 就能退出了,docker ps 查看,發(fā)現(xiàn)剛才運行的容器沒有運行,Ctrl + d 退出,容器也會停止運行。
退出了,怎么讓剛才的容器重新跑起來?
docker start id/name
docker ps 可以看到,容器正在運行,有人想問,我想進入到這個ubuntu容器里去??!怎么做?
docker attach id/name后臺運行,日志
我們在實際開發(fā)中,一般不會run的時候就登陸到容器里去,而是把應(yīng)用部署到容器里,以后臺保護進程來運行。
docker run -t -i -d --name robin_test ubuntu:14.04 /bin/bash //在原來額基礎(chǔ)上加上-d參數(shù)就行, daemon (守護) // 為了你以后想登陸進去,我加上了 -t -i 交互參數(shù)
問題來了,我的應(yīng)用布置上去了,我怎么看運行狀態(tài)啊!就是docker的日志。為了方便演示,我們創(chuàng)建啟動一個新容器,讓他一直打印helloWorld
啟動一個新容器
docker run --name loop -d ubuntu:14.04 /bin/sh -c "while [ true ]; do echo helloWorld; sleep 1; done"
然后執(zhí)行下面的一條查看日志,就可以看到我們神奇的helloWorld了
docker logs [容器名] docker logs [容器名] -f //實時查看 docker logs [容器名] -f --tail 100 //加上行數(shù) docker logs [容器名] -f t --tail 0 //日志顯示時間
容易運行時一些系統(tǒng)信息解釋下/bin/sh -c "..." ,先來man下sh(dash) , command interpreter 指令解釋器,-c 將字符串解析成指令執(zhí)行。
我們經(jīng)常在linux上部署應(yīng)用,會查看一些系統(tǒng)信息,我們也可以查看運行容器的一些進程,cpu內(nèi)存使用情況等。
先來看看進程,任然查看剛才的loop容器
docker top loop
可以看到
這里有兩個進程,一個是while循環(huán),一個是sleep睡眠。
再來看看應(yīng)用的cpu內(nèi)存一些信息
docker stats loop
可以看到loop占用了多少內(nèi)存,多少cpu,以及io的統(tǒng)計。
這里來點更有意思的,我們運行的容器,我能不能讓他執(zhí)行一些命令,可是我啟動的時候,沒有以交互方式run的,現(xiàn)在也登陸不進去。我想修改配置,怎么辦??!
哈哈!等你看完下面的,這些問題都變得so easy!!!
先來一個tomcat鏡像
docker run -d --name test -p 8080:8080 tomcat
運行docker ps 可以看到你的tomcat已經(jīng)跑起來的,而且端口有映射8080映射到主機的8080上。
用瀏覽器訪問下host:8080 ,出現(xiàn)經(jīng)典的tomcat主頁。
好戲才開始在tomcat的ROOT下創(chuàng)建一個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】在容器里執(zhí)行指令,-d 在后臺執(zhí)行這個指令,test是容器名;touch /usr/local/tomcat/webapps/ROOT/hello.html這里是容器里需要執(zhí)行的指令。
訪問下hello.html 發(fā)現(xiàn)能訪問,但是什么也沒有,一個空白頁。沒錯,你只是創(chuàng)建了一個hello.html頁面,沒有寫入任何東西。
給你新建的文件寫點東西
docker exec test /bin/sh -c "echo helloWorld>/usr/local/tomcat/webapps/ROOT/hello.html"
在訪問下頁面,頁面上顯示helloWorld,有東西了,很爽吧!很簡單,用sh -c來執(zhí)行下命令。
將文件里的內(nèi)容 cat 下
docker exec test /bin/sh -c "cat /usr/local/tomcat/webapps/ROOT/hello.html"
這里千萬別加-d參數(shù),不然看不到任何輸出信息。
補充:大家可能有疑惑,我怎么知道tomcat的路徑啊!這里先給大家引入一個查看容器詳情的指令,docker inspect,執(zhí)行docker inspect test 可以看到很長一段json格式的信息,我們先別看那么多,反正也看不懂,別把自己弄糊涂了!
現(xiàn)在你應(yīng)該知道路徑了吧!
以交互的方式再進入運行的tomcatdocker exec -it test /bin/bash
好了,進入到了交互界面了,退出的話直接exit就行,但是容器是沒有停止的。
之前我們run的時候可以以交互模式進入的,退出容器也停止了,不推薦。這里我們小總結(jié)下:啟動images的時候,以-d守護進程啟動,然后進入交互里的數(shù),就docker exec -it test /bin/bash方式。
今天先到這了,接下來你可以去好好裝逼了,下期再見。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26908.html
摘要:在十二贊的深度應(yīng)用我們是十二贊,一個致力于幫助電商賣家進入小程序的小團隊,我們的主頁是。我們的整個業(yè)務(wù)構(gòu)建于阿里云之上,有臺每一對都有獨立的外網(wǎng)同時也在同一個內(nèi)網(wǎng)之中。,我們把所有的文件都挪到阿里云的服務(wù)上。當然,也是可執(zhí)行文件發(fā)布的。 Golang 在十二贊的深度應(yīng)用 我們是十二贊,一個致力于幫助電商賣家進入小程序的小團隊,我們的主頁是http://www.12zan.cn/。在實際...
閱讀 1567·2021-11-24 09:39
閱讀 1053·2021-11-22 15:11
閱讀 2174·2021-11-19 11:35
閱讀 1630·2021-09-13 10:37
閱讀 2459·2021-09-03 10:47
閱讀 2145·2021-08-30 09:47
閱讀 1635·2021-08-20 09:39
閱讀 2907·2019-08-30 14:13