资讯专栏INFORMATION COLUMN

Docker 来点好玩的

shiguibiao / 3778人阅读

摘要:经过上篇入门后,肯定有点抱怨,还是没有体验到的威力。现在我们来点好玩的。今天先到这了,接下来你可以去好好装逼了,下期再见。

经过上篇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的统计。

不登陆容器执行command

这里来点更有意思的,我们运行的容器,我能不能让他执行一些命令,可是我启动的时候,没有以交互方式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格式的信息,我们先别看那么多,反正也看不懂,别把自己弄糊涂了!

现在你应该知道路径了吧!

以交互的方式再进入运行的tomcat
docker exec -it test /bin/bash

好了,进入到了交互界面了,退出的话直接exit就行,但是容器是没有停止的。

之前我们run的时候可以以交互模式进入的,退出容器也停止了,不推荐。这里我们小总结下:启动images的时候,以-d守护进程启动,然后进入交互里的数,就docker exec -it test /bin/bash方式。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26908.html

相关文章

  • 玩了两天 Docker , 发现还不错挺好玩, 安装了一下 mongodb .

    Docker 学习笔记 Docker 中配置 Mongodb 集群和分片

    gaomysion 评论0 收藏0
  • 玩了两天 Docker , 发现还不错挺好玩, 安装了一下 mongodb .

    Docker 学习笔记 Docker 中配置 Mongodb 集群和分片

    AbnerMing 评论0 收藏0
  • Golang 在十二赞深度应用

    摘要:在十二赞的深度应用我们是十二赞,一个致力于帮助电商卖家进入小程序的小团队,我们的主页是。我们的整个业务构建于阿里云之上,有台每一对都有独立的外网同时也在同一个内网之中。,我们把所有的文件都挪到阿里云的服务上。当然,也是可执行文件发布的。 Golang 在十二赞的深度应用 我们是十二赞,一个致力于帮助电商卖家进入小程序的小团队,我们的主页是http://www.12zan.cn/。在实际...

    Honwhy 评论0 收藏0
  • 前端简单面部识别

    摘要:前言过年了,来点有趣的东西最近一直在尝试通过如何视频,怎么捕捉视频的行为,给视频加点好玩的东西比如给视频加一个胡子以下记录一下最近的玩具点击这里看自己的效果需要允许摄像头呀效果效果大概如下就是给视频的脸上加个胡子我手机上有防蓝光的膜,各位大 前言 过年了,来点有趣的东西 最近一直在尝试通过web如何DIY视频,怎么捕捉视频的行为,给视频加点好玩的东西,比如给视频加一个胡子? 以下记录一...

    econi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<