- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Docker v1.13 新功能介绍由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
docker 1.13 发布已经26天了,趁着今天想起系统密码,更新了一下系统,顺便体验一下新版本的功能.
因为我之前没有装过插件,一直都是乖乖用稳定版,所以像 docker plugin、docker stack这些子命令我都没有试过。因此本次升级没有卸载插件的步骤,不过你要是以前装了插件得先卸载,毕竟api变了.
docker 1.13.1 。
新增哪些功能 。
从国内几家科技媒体的文章都是从这里粘贴复制的:
该版本更新内容较多,涉及到网络、插件、移除掉的 api & 客户端、运行时、安全性以及依赖等.
docker 1.13有一千四百多个issue/pull request,五千多个commits,是docker历史上最高的发布版本。这并不是一个简单的小版本变化,里面有大量的更新.
top 10 新增功能 。
好了,逐一看看这新功能咯.
构建缓存 。
第一件事就是构建缓存,终于来了。这个功能在持续构建过程中太有用了,以前docker只能自己自动利用本地构建缓存,现在可以指定构建缓存了,不过使用缓存的前提条件是曾经在本地构建过这个镜像.
例如,在合并请求中看到的例子:
1
2
|
docker pull myimage:v1.0
docker build --cache-from myimage:v1.0 -t myimage:v1.1 .
|
ps:另外发现docker这个版本对镜像标签命名也做了限制,必须是“用户/仓库”的格式.
压扁 (squash) 镜像 。
这个怎么翻译?算了,跟风保留“压扁”。这个对我个人来说效果不是很明显,因为我总是把全部run指令写到一起,以此减少镜像体积.
但也总有人喜欢一句命令一个run指令,这样这个功能就很有用了。(话说这个写法真是不作不死。) 。
正确的做法当然是遵循 dockerfile 最佳实践,应该把多个命令合并为一个 run,每一个 run 要精心设计,确保安装构建最后进行清理。这样才可以降低镜像体积,以及最大化的利用构建缓存.
不过docker这么人性化,当然得为这些“一行一个run”的用户添加点功能,以此减少他们构建镜像的体积.
同样是 docker build 的参数:--squash,你可以理解为docker自动把多个run在同一文件层执行了,不过保留了每一个run的构建历史.
要是这个功能完善之后,我也要转投“一行一个run”,毕竟省事很多啊。这个功能还在试验阶段.
构建镜像时指定网络 。
这个我很少遇到过啊,一般都是直接改/etc/hosts文件,反正也不复杂,不过要是在分布网络里就麻烦了点.
docker build --network指定网络就好,还是蛮有用的.
--build-arg问题修复 。
这个我也不怎么遇到,毕竟我很少有项目需要持续构建啊。以前的设定是--build-arg后面的变量一定要在构建过程中用到,现在即使制定了不用也可以,不会构建失败.
这样改的好处就是,在一些公司中持续构建过程中,不同dockerfile使用不同的--build-arg参数,而持续构建中使用同一条构建指令(或者脚本)构建,1.12版本时是会报错的,1.13降为警告级别.
对于我这种一般用户而言直接写进 dockerfile 里好了.
安装过程可以使用--mirror参数 。
这个是“专门”为天朝添加的功能,笑.
1
|
curl -ssl https:
//get
.docker.com/ | sh -s -- --mirror azurechinacloud
|
上面的例子中安装docker时会使用微软中国的镜像,至于安装后会不会自动添加仓库镜像源,我不知道啊.
docker run 直接加入集群 。
以前swarm集群网络是不允许容器这样加入网络中的,因为有可能会破坏集群网络结构.
然后大伙又有这种需求,于是一种折中的办法就是添加一个--attachable参数.
1
|
$ docker network create -d overlay --attachable test_attach
|
老实说这样不太好的感觉,新加入的容器很容易就玩坏整个集群呐,坏笑。在服务设计时多考虑一下就好了啊,安全为上.
service create --publish格式变化 。
1
|
--publish protocol=tcp,mode=ingress,published=8080,target=80
|
我没有试过喽,-p已经满足我了.
network inspect显示连接节点 。
这个大大的好,以前只能靠第三方工具或者拐弯抹角地查看,现在直接在管理节点就可以看到了.
插件来了 。
1.12的这个实验特性真是蛮让人期待的。然而我暂时不想看,笑.
checkpoint 。
检查点,有点像赛车,跑到中途一个检查点,备份记录一下当时的状态,然后继续前进,需要时可以从某个检查点的状态恢复。这么一看挺像快照的功能,要是进入正式版,估计eclipse che那里的快照命名会有改进.
docker stats显示容器名 。
这个反人类的设计终于有了人性化的改进,以前查看容器状态还得看容器id,现在可以显示容器名了.
注意是可以,默认还是不显示的,需要定制输出格式:
。
。
is-task过滤器 。
docker ps 的一个参数,可以显示哪些容器是集群服务的容器,哪些是直接运行起来容器。还是有用的功能,不过我自己对容器命名都蛮严格的,不会乱到不认识,笑.
1
|
docker
ps
-f
'is-task=true'
|
inspect升级 。
这个命令已经可以查看任何docker对象了,是任何哦。 邪恶的我试了一下,同时存在名为nginx镜像、容器、网络、服务的情况下,inspect会优先查看名为nginx容器的信息,查看其它同名对象的信息就需要使用id了.
直接启用实验功能 。
dockerd --experimental就可以直接启用实验功能了,简直测试实验功能的利器,不需要重装docker了.
增加 docker system 命令 。
很多人在以前搞不懂自己的镜像到底占了多少空间、容器占了多少空间,卷占了多少空间。怎么删除不用的东西以释放资源。从 1.13 开始,docker 提供了一组 system 命令来帮助系统管理上的问题.
1
2
3
4
5
|
docker system
df
type
total active size reclaimable
images 21 3 10.3 gb 8.564 gb (83%)
containers 3 3 2 b 0 b (0%)
local
volumes 1 1 0 b 0 b
|
那个reclaimable居然那么大,吓我一跳,后来一想我电脑在家就运行两个容器,所以其他镜像都被识别为可回收的了.
还有那个数据卷,我数据卷少说也有几百mb,不知道这里的结果是怎么计算出来的.
上面显示的列表中列出了镜像、容器、本地卷所占用的磁盘空间,以及可能回收的磁盘空间。比如,我们看到镜像有 123mb 的空间可以回收,从 1.13 开始,docker 提供了一组 prune 命令,分别是:
一个值得提醒的是,这个版本的命令有了很多调整,虽然保留了1.12时候的风格,但是docker已经开始更加合理地分配子命令.
之前默认的 docker info,docker ps,docker rm,docker run 都开始归类于对应的 docker image, docker container, docker system 下了.
之前的命令依旧可以使用,会继续保持一段时间。但是从 1.13 开始,推荐使用各个子命令的版本了.
swarm新加的几个功能都没看,有空再说吧.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:http://www.jianshu.com/p/56b424c3a1bd 。
最后此篇关于Docker v1.13 新功能介绍的文章就讲到这里了,如果你想了解更多关于Docker v1.13 新功能介绍的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
为了方便大家管理系列博文,今天发布一个预览版新功能——合集。 您可以在博客后台 合集 栏目中创建新合集 或者在编辑博文时快捷地创建新合集 然后可以在编辑时将博文与合集关
我正在尝试实现 AirDrop我的 iOS 应用程序中的功能。但是,我无法找到有关此功能的任何特定教程或资源。有人可以向我提供有关 AirDrop 实现的示例或链接吗? iOS 7 中的功能? 非常感
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
是否需要重写 equals() 方法来在 Switch 案例中使用 String 数据类型 最佳答案 您不仅不需要这样做,而且根本无法这样做(String 是 final)。 关于Java 7 新功能
我有一些关于 DB2 NF 模式的客户问题。谷歌对此知之甚少。 我已经能够 推断 以下,但我并不完全相信它...... NF 和 CM(兼容模式)是大型机上 DB2 v8 上的设置。 CM 中 z/O
Market 添加了设备兼容性检查。现在我们可以检查应用程序是否适用于特定设备,例如 HTC 手机、三星 Galaxy 等。 开发者方面如何:我们如何才能只为特定设备构建应用程序或限制只为平板电脑开发
fastlane supply android元数据具有以下结构: └── fastlane └── metadata └── android ├──
所以我的理解是,当对象的最后一个剩余所有者被销毁或重新分配时,shared_ptr 会自动从内存中释放,(看起来好得令人难以置信?)并且当许多实例可能共享同一个对象时它很有用。正确吗? 所以在我的例子
这个问题在这里已经有了答案: Backticks (`…`) calling a function in JavaScript (3 个答案) 关闭 6 年前。 遇到过这个例子,完全迷路了... c
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 4年前关闭。 Improve t
我是 Laravel 5 的新手。我目前正在做一个带有 CRUD 功能的任务项目。我做了删除功能,但是update和add还是乱七八糟的。请帮助我。 我的数据库只有 1 个表,'tasks' 有 3
根据 Sass 3.3 发行说明,以下代码应该可以工作。 @mixin element($name) { @at-root #{&}__#{$name} { @cont
我们如何监听“http.Server”事件?或者我们如何实例化一个“http.Server”对象? 根据nodejs.org/api.html: “http.Server”是一个 EventEmitt
我正在开发一个 React 应用程序,该应用程序从 Rails api 提供数据。我目前正在开发一个包含嵌套关联的表单(即 model_a 中有许多 model_b,您可以以相同的表单创建它们)。 我
在我的应用程序中,我想使用 iOS 7 的新功能:静默远程通知。另外,还要保证在iOS 6下能正常安装运行。这两个场景会不会冲突? 我试过这个: #ifdef IOS7_OR_LATER - (voi
我是 Apple 平台的新手,我从 xcode 7 和 swift 开始。我想为最新版本的 iOS (9.0) 创建应用程序,但支持 2 个旧版本,如 8 和 7。 基础 SDK:最新 (iOS 9.
在我的Redis缓存中,我已经运行 SET 12345 JoeDude SET JoeDude "It works!!" 我有一个Lua脚本,打算从终端运行: lua local user=redis
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 8年前关闭。 Improve this qu
我正在redis中编写一个lua脚本,并在 Spring 执行它,内容很简单 local store = redis.call('hget',KEYS[1],'capacity') print(s
“选择调试应用程序”和“等待调试器”是果冻 bean 的新功能,有人知道如何使用这些新功能吗? 最佳答案 我在这里找到了答案:http://developer.android.com/tools/de
我是一名优秀的程序员,十分优秀!