通过上篇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方式。
今天先到这了,接下来你能够去好好装逼了,下期再见。