这篇文章主要介绍了Docker v1.13新功能有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Docker v1.13新功能有哪些文章都会有所收获,下面我们一起来看看吧。
新增哪些功能
从国内几家科技媒体的文章都是从这里粘贴复制的:
该版本更新内容较多,涉及到网络、插件、移除掉的 api & 客户端、运行时、安全性以及依赖等。
docker 1.13有一千四百多个issue/pull request,五千多个commits,是docker历史上最高的发布版本。这并不是一个简单的小版本变化,里面有大量的更新。
top 10 新增功能
正式支持服务栈:docker stack
正式支持插件:docker plugin
添加在swarm集群环境下对密码、密钥管理的 secret 管理服务:docker secret
增加命令:docker system
可以直接使用 docker-compose.yml 进行服务部署
添加 docker service 滚动升级出故障后回滚的功能
增加强制再发布选项 docker service update –force
允许 docker service create 映射宿主端口,而不是边界负载均衡网络端口
允许 docker run 连入指定的 swarm mode 的 overlay 网络
解决中国 gfw 墙掉 docker-engine apt/yum 源的问题
好了,逐一看看这新功能咯。
构建缓存
第一件事就是构建缓存,终于来了。这个功能在持续构建过程中太有用了,以前docker只能自己自动利用本地构建缓存,现在可以指定构建缓存了,不过使用缓存的前提条件是曾经在本地构建过这个镜像。
例如,在合并请求中看到的例子:
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参数
这个是“专门”为天朝添加的功能,笑。
curl -ssl https://get.docker.com/ | sh -s -- --mirror azurechinacloud
上面的例子中安装docker时会使用微软中国的镜像,至于安装后会不会自动添加仓库镜像源,我不知道啊。
docker run 直接加入集群
以前swarm集群网络是不允许容器这样加入网络中的,因为有可能会破坏集群网络结构。
然后大伙又有这种需求,于是一种折中的办法就是添加一个--attachable参数。
$ docker network create -d overlay --attachable test_attach
老实说这样不太好的感觉,新加入的容器很容易就玩坏整个集群呐,坏笑。在服务设计时多考虑一下就好了啊,安全为上。
service create --publish格式变化
--publish protocol=tcp,mode=ingress,published=8080,target=80
我没有试过喽,-p已经满足我了。
network inspect显示连接节点
这个大大的好,以前只能靠第三方工具或者拐弯抹角地查看,现在直接在管理节点就可以看到了。
插件来了
1.12的这个实验特性真是蛮让人期待的。然而我暂时不想看,笑。
checkpoint
检查点,有点像赛车,跑到中途一个检查点,备份记录一下当时的状态,然后继续前进,需要时可以从某个检查点的状态恢复。这么一看挺像快照的功能,要是进入正式版,估计eclipse che那里的快照命名会有改进。
docker stats显示容器名
这个反人类的设计终于有了人性化的改进,以前查看容器状态还得看容器id,现在可以显示容器名了。
注意是可以,默认还是不显示的,需要定制输出格式:
复制代码 代码如下:
docker stats --format 'table {{.name}}\t{{.cpuperc}}\t{{.memusage}}\t{{.memperc}}\t{{.netio}}\t{{.blockio}}\t{{.pids}}'
is-task过滤器
docker ps 的一个参数,可以显示哪些容器是集群服务的容器,哪些是直接运行起来容器。还是有用的功能,不过我自己对容器命名都蛮严格的,不会乱到不认识,笑。
docker ps -f 'is-task=true'
inspect升级
这个命令已经可以查看任何docker对象了,是任何哦。
邪恶的我试了一下,同时存在名为nginx镜像、容器、网络、服务的情况下,inspect会优先查看名为nginx容器的信息,查看其它同名对象的信息就需要使用id了。
直接启用实验功能
dockerd --experimental就可以直接启用实验功能了,简直测试实验功能的利器,不需要重装docker了。
增加 docker system 命令
很多人在以前搞不懂自己的镜像到底占了多少空间、容器占了多少空间,卷占了多少空间。怎么删除不用的东西以释放资源。从 1.13 开始,docker 提供了一组 system 命令来帮助系统管理上的问题。
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 命令,分别是:
docker image prune:删除无用的镜像
docker container prune:删除无用的容器
docker volume prune:删除无用的卷
docker network prune:删除无用的网络
docker system prune:删除无用的镜像、容器、卷、网络
一个值得提醒的是,这个版本的命令有了很多调整,虽然保留了1.12时候的风格,但是docker已经开始更加合理地分配子命令。
之前默认的 docker info,docker ps,docker rm,docker run 都开始归类于对应的 docker image, docker container, docker system 下了。
之前的命令依旧可以使用,会继续保持一段时间。但是从 1.13 开始,推荐使用各个子命令的版本了。
关于“Docker v1.13新功能有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Docker v1.13新功能有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。