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方式。

今天先到这了,接下来你能够去好好装逼了,下期再见。

相关文章
相关标签/搜索