摘要:经过上篇入门后,肯定有点抱怨,还是没有体验到的威力。现在我们来点好玩的。今天先到这了,接下来你可以去好好装逼了,下期再见。
经过上篇docker入门后,肯定有点抱怨,还是没有体验到docker的威力。现在我们来点好玩的。
装个ubuntu以前我们装ubuntu,都是要费老大的力气,有了docker,我们装个ubuntu玩玩。
docker run -t -i ubuntu:14.04 /bin/bash
好了,你装好了ubuntu了,可以在里面随便玩,玩坏了!没事,删掉重建一个。
这里跟我们之前创建启动容器的方式不一样,多了一些参数。我们来找--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 让我们能输入字符 ;两个结合起来就能进行交互。最后/bin/bash 是让容器ubuntu启动时bash运行。
为了方便管理,我们创建创建容器的时候,可以初始化一个name
docker run -t -i --name robin_test ubuntu:14.04 /bin/bash
最后面可以看到名字变了,之前我们都没有初始化名字,docker会帮我们随机生成一个。name 是唯一的,当第二次执行上面耳朵命令,会失败,因为容易里已经存在robin_test这个容器。
如何退出了? 直接Ctrl + d 或者 exit 就能退出了,docker ps 查看,发现刚才运行的容器没有运行,Ctrl + d 退出,容器也会停止运行。
退出了,怎么让刚才的容器重新跑起来?
docker start id/name
docker ps 可以看到,容器正在运行,有人想问,我想进入到这个ubuntu容器里去啊!怎么做?
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格式的信息,我们先别看那么多,反正也看不懂,别把自己弄糊涂了!
现在你应该知道路径了吧!
以交互的方式再进入运行的tomcatdocker exec -it test /bin/bash
好了,进入到了交互界面了,退出的话直接exit就行,但是容器是没有停止的。
之前我们run的时候可以以交互模式进入的,退出容器也停止了,不推荐。这里我们小总结下:启动images的时候,以-d守护进程启动,然后进入交互里的数,就docker exec -it test /bin/bash方式。
今天先到这了,接下来你可以去好好装逼了,下期再见。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/26908.html
摘要:在十二赞的深度应用我们是十二赞,一个致力于帮助电商卖家进入小程序的小团队,我们的主页是。我们的整个业务构建于阿里云之上,有台每一对都有独立的外网同时也在同一个内网之中。,我们把所有的文件都挪到阿里云的服务上。当然,也是可执行文件发布的。 Golang 在十二赞的深度应用 我们是十二赞,一个致力于帮助电商卖家进入小程序的小团队,我们的主页是http://www.12zan.cn/。在实际...
阅读 1563·2021-11-24 09:39
阅读 1048·2021-11-22 15:11
阅读 2168·2021-11-19 11:35
阅读 1630·2021-09-13 10:37
阅读 2456·2021-09-03 10:47
阅读 2137·2021-08-30 09:47
阅读 1628·2021-08-20 09:39
阅读 2902·2019-08-30 14:13