关于docker的15个小tip
2016-12-07 19:40
232 查看
1. 获取最近运行容器的id
这是我们经常会用到的一个操作,按照官方示例,你可以这样做(环境ubuntu):
2.尽量在Dockerfile中指定要安装的软件,而不用Docker容器的shell直接安装软件
说实话,我有时候也喜欢在shell中安装软件,也许你也一样,喜欢在shell中把所有软件安装都搞定。但是,搞来搞去,最后还是发现,你还是需要在Doockerfile中指定安装文件。在shell中安装软件,你要这样做:
3.超-超-超级用户
你可能需要一直用超级用户来操作docker,就像早期示例里一直提示的:
4. 清理垃圾
如果你想删除所有停止运行的容器,用这个命令:
5. docker inspect输出结果的解析利器:jq
要对docker inspect的输出结果进行过滤,一般情况下,用grep命令,你需要这样操作:
6.镜像有哪些环境变量?
有时候,你需要知道自己创建的镜像有哪些环境变量。简单!只要这样:
7.RUN命令 vs CMD命令
Docker的新手用户比较容易混淆RUN和CMD这两个命令。RUN命令在构建(Build)Docker时执行,这时CMD命令不执行。CMD命令在RUN命令执行时才执行。我们来理清关系,假设Dockerfile内容如下:
8.CMD命令 vs ENTRYPOINT命令
又是两条容易混淆的命令!具体细节我们就不说了,举个例子,假设一个容器的Dockerfile指定CMD命令,如下:
9.Docker容器有自己的IP地址吗?
刚接触Docker的人或许会有这样的疑问:Docker容器有自己的IP地址吗?Docker容器是一个进程?还是一个虚拟机?嗯…也许两者兼 具?哈哈,其实,Docker容器确实有自己的IP,就像一个具有IP的进程。只要分别在主机和Docker容器中执行查看ip的命令就知道了。查看主机的ip:
10.基于命令行的瘦客户端,使用UNIX Socket和Docker后台服务的REST接口进行通信
Docker默认是用UNIX socket通信的,一直到大概0.5、0.6的版本还是用端口来通信,但现在则改成UNIX socket,所以从外部无法控制Docker容器的内部细节。下面我们来搞点有趣的事情,从主机链接到docker的UNIX socket:
11.把镜像的依赖关系绘制成图
docker images命令有一个很拉风的选项:-viz,可以把镜像的依赖关系绘制成图并通过管道符号保存到图片文件:(译者注:要使用dot命令,主机要安装graphviz包。另外,如果主机ip没有绑定域名,machinename换成主机的ip即可。)
12.Docker把东西都存到哪里去了?
Docker实际上把所有东西都放到/var/lib/docker路径下了。切换成super用户,到/var/lib/docker下看看,你能学到很多有趣的东西。执行下面的命令:
13.Docker源代码:Go, Go, Go, Golang!
Docker的源代码全部是用Go语言写的。Go是一门非常酷的语言。其实,不只是Docker,很多优秀的软件都是用Go写的。对我来说,Docker源文件中,有4个是我非常喜欢阅读的:commands.go
docker的命令行接口,是对REST API的一个轻量级封装。Docker团队不希望在命令中出现逻辑,因此commands.go只是向REST API发送指令,确保其较小的颗粒性。
api.go
REST API的路由(接受commands.go中的请求,转发到server.go)
server.go
大部分REST API的实现
buildfile.go
Dockerfile的解析器
有的伙计惊叹”Wow!Docker是怎么实现的?!我无法理解!”没关系,Docker是开源软件,去看它的源代码就可以了。如果你不太清楚Dockerfile中的命令是怎么回事,直接去看buildfile.go就明白了。
14.运行几个Docker后台程序,再退出容器,会发生什么?
OK,倒数第二个要点。如果在Docker中运行几个后台程序,再退出Docker容器,会发生什么?答案是:不要这么做!因为这样做后台程序就全丢了。Dockerfile中用RUN命令去开启一个后台程序,如:
15.容器之间进行友好沟通:链接
这是最拉风的功能!我把它留到最后压轴!这是0.6.5中最重要的新功能,我们前面已经提过两次了。运行一个容器,给它一个名称,在下面的例子中,我们通过-name参数给容器指定名称”loldb”:
16.快速删除docker中的容器
有时候做练习的时候会生成大量的容器,一个一个停用然后删除实在太没有效率了。
1、停用全部运行中的容器:
docker stop $(docker ps -q)1
1
[/code]
2、删除全部容器:
docker rm $(docker ps -aq)1
1
[/code]
3、一条命令实现停用并删除容器:
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
相关文章推荐
- 关于docker的15个小tip(技巧)
- 关于docker的15个小tip
- 关于docker的15个小tip
- 关于docker的15个小tip
- 关于platform_device一些讲解--由bluesleep带来的tip
- 关于在一个页面中包含15个几以上flash mp3 players时,在非IE下播放不正常的问题和解决方案
- 关于重构10条Tip
- 关于tree的labelFunction和dataTipFunction问题
- tip:关于rangepartition用到多列的一个小案例
- 今天看了一篇oracle tip,关于如何获得行锁时跳过已被锁的行,oracle8i的sql reference居然没有关于这个选项的介绍,特此记录下来。
- 关于linux中的exec*系列函数的一点tip
- 关于meego开发你必须了解的15个事实
- ASP.NET Tricks&Tip:关于Tooltip(title)的换行问题
- [collection tip]关于算法 数据结构 x64 电子书
- [python]关于import的一个使用tip
- 关于指针的15个经典面试题
- 关于MeeGo,你必须了解的15个事实!
- 关于按钮等控件提示信息CXInfoTip 类改进
- TIP: 关于划分feature与时间估算
- Tip: Windows Phone - 关于错误报告