與Running Instance互動
docker exec
$ docker run -it centos bash
[root@6b2be6ff2f00 /]#
$ docker exec 6b2be6ff2f00 ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:21 ? 00:00:00 bash
root 16 0 0 10:22 ? 00:00:00 ps -ef
docker logs [-t]
docker logs可以用來檢視執行中docker的screen output,通常對以daemon形式執行的系統來說相當有用,因為此時我們可以不用attach到該instance環境中就可以透過這個指令直接看到目前執行的狀況,也不用擔心影響到執行中的instance...
這邊以執行一個node.js express專案執行為例,我們可以在本機端使用express產生專案,如下:
$ cd ~/project
$ express -e web
$ cd web && npm install
接下來我們直接使用我所建置的Docker:peihsinsu/nodejs-runtime來啟動這個目錄的node.js程式,這個image的Dockerfile如下:
FROM google/nodejs
WORKDIR /data
EXPOSE 3000
CMD []
ENTRYPOINT ["/nodejs/bin/npm", "start"]
最後image啟動後會expose 3000 port並且使用"npm start"來啟動container中"/data"目錄下的node.js程式。
啟動方式如下:
$ docker run -d -p 3000:3000 -v ~/project/web:/data peihsinsu/nodejs-runtime
a66d4ee9ca8a03eaa4e72d701550ed10f6222b64fc52f0934c9ec389ac516c5c
此時可以在docker ps看到instance的簡短id: a66d4ee9ca8a
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a66d4ee9ca8a peihsinsu/nodejs-runtime:latest "/nodejs/bin/npm sta 7 seconds ago Up 4 seconds 3000/tcp, 0.0.0.0:8080->8080/tcp focused_rosalind
此時如要看到該程序啟動的狀態,就可以使用docker logs來查看
$ docker logs -f 1558d25188647136e16ad5f8b418768ff8a9d6932ec03f216cbce0a861ea046d
> [email protected] start /data
> node ./bin/www
GET / 200 859.029 ms - 170
GET / 200 27.114 ms - 170
docker logs除了用來看執行中的instance log,也可以用來看執行有錯誤時候的錯誤log,例如一個docker run沒有正確啟動時候,但是docker只吐回instance id沒有其他錯誤訊息,可以用docker logs來debug...
$ docker run -d -p 3000:3000 -v /tmp/web2:/data peihsinsu/nodejs-runtime
d1a63a8aa8301a251d110b7104ceb14fb9c649b44ce1c4ba3b17fe00336e4636
$ docker logs d1a63a8aa8301a251d110b7104ceb14fb9c649b44ce1c4ba3b17fe00336e4636
npm ERR! Error: ENOENT, open '/data/package.json'
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR! <http://github.com/npm/npm/issues>
npm ERR! System Linux 3.18.5-tinycore64
npm ERR! command "/nodejs/bin/node" "/nodejs/bin/npm" "start"
npm ERR! cwd /data
npm ERR! node -v v0.10.33
npm ERR! npm -v 1.4.28
npm ERR! path /data/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /data/npm-debug.log
npm ERR! not ok code 0