之前因为一个镜像导入的问题浪费很多时间,这里记录一下。
现象: docker save 一个镜像后,再通过 docker import 导入到另一台机器上时,无法运行这个镜像:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused “exec: “/bin/bash”: stat /bin/bash: no such file or directory”: unknown.
查看相关命令也没发现什么有意义的信息:
[demonlee@i-mluwuwl1 ~]$ docker save --help
Usage: docker save [OPTIONS] IMAGE [IMAGE...]
Save one or more images to a tar archive (streamed to STDOUT by default)
Options:
-o, --output string Write to a file, instead of STDOUT
[demonlee@i-mluwuwl1 ~]$
[demonlee@i-mluwuwl1 ~]$ docker import --help
Usage: docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
Import the contents from a tarball to create a filesystem image
Options:
-c, --change list Apply Dockerfile instruction to the created image
-m, --message string Set commit message for imported image
--platform string Set platform if server is multi-platform capable
[demonlee@i-mluwuwl1 ~]$
[demonlee@i-mluwuwl1 ~]$ docker load --help
Usage: docker load [OPTIONS]
Load an image from a tar archive or STDIN
Options:
-i, --input string Read from tar archive file, instead of STDIN
-q, --quiet Suppress the load output
[demonlee@i-mluwuwl1 ~]$
[demonlee@i-mluwuwl1 ~]$ docker export --help
Usage: docker export [OPTIONS] CONTAINER
Export a container's filesystem as a tar archive
Options:
-o, --output string Write to a file, instead of STDOUT
[demonlee@i-mluwuwl1 ~]$
通过搜索,在 stackoverflow 上看到这篇文章才有所了解:
docker save 会将镜像的分层以及 tag 信息都打包进去,而 docker export 则不会。docker load 和 docker import 则与上面相对应,docker load 导入原先的镜像,而 docker import 更多的是从输入的文件系统内容新创建一个镜像,所以没有分层及历史信息等。As docker import or docker image import create a image from a filesystem, one can change / provide entrypoint, cmd, run etc. dockerfile instructions which option is not available with docker load or docker image load as this create 1/more images which already have it’s layers & other history info preserved.
由于 docker import 或 docker image import 是从文件系统中创建一个镜像,人们可以改变/提供入口、cmd、运行等dockerfile指令,而 docker load 或 docker image load 是没有这个选项的,因为它创建了一个或多个镜像,已经保留了它的层和其他历史信息。
《程序员的财富课》· Chapter 11 | 个人发展之财富拓展
1、从能力到财富的转换,先要有危机意识,不能等危机到了才知道行动,那已经晚了。
2、完成财富积累有不同的方式:技术财富、人脉及管理财富、创业财富以及金融房产财富,如果能在多个方向上都有所突破,那就更棒了。
3、主动思考才能把握住财富的机会:我有什么能力,有什么优势,能做什么,如何转换成财富?
4、榕树关系:主业和副业最好的关系
气生根(英语:Aerial root),又称 气根,是由植物地面上的茎或枝生出的不定根,曝露于空气中而非埋在土壤或水等介质中生长的根。一般无根冠与根毛;可具有吸收空气中的水分、支撑植物体向上生长、攀附在物体上、甚至吸取寄主营养、伸出水面通气等功能。在热带雨林中十分普遍。
5、我适合搞副业吗?
一个副业都要问问能否坚持十年,那主业呢?加油干,把技术壁垒搭起来。


富人看不起穷人,穷人能知道。有知识的人看不起无知的人,无知者压根儿就不知道。
不仅扎心,而且令我有些后怕。可是转念一想,难道我们学习那么多知识,就是为了瞧不起人吗?那只能说有知识,并不代表有智慧,有修养。
真实的世界,可能就是那样,分三六九等。这,我无法改变。而于我自己,要有知识,也要有智慧和修养。

刚刚发表的这篇学习笔记,从五一放假就开始写,一直到今天早上才算完成。在这期间,我读完了三本书,分别是海明威的《老人与海》,肯·科钦达的《创意选择》以及川添爱的《漫画计算机原理》。
这让我对写作又有了新的体会,输出比输入要难的多,写作的过程就是一个深入思考的过程。同样是一章节的内容,看一遍,最多的只是很浅的思考,遇到很多不懂的内容,很快就跳过去了,或者告诉自己下次再查查资料。结果呢,大多数情况下都是不了了之。所以这里也提个建议,如果看书的时候效率不高,不如拿起笔,写写画画。
而写作则是另一种途径,发表在网上文章,你会假设有人去读,这个时候就会感觉到一种无形的压力,你会对内容进行分析解读,查阅很多资料,甚至交叉对比,要不然大家看不懂呀。
张艺谋说:“眼过千遍,不如手过一遍”,这个分析解读的过程,就是深入思考的过程。七牛云 CEO 许式伟又说:“用思考的方式去记忆,而不是用记忆的方式去思考”,这就是为什么那么大佬坚持写博客,写公众号的原因。
说到这里,让我们再回顾一下金字塔学习模型:

《程序员的财富课》· Chapter 10 | 个人发展之跳槽涨薪
1、为何跳槽涨薪比内部涨薪快?
正因如此,长期在一家企业干,薪资一般会与市场脱节,建议在合适的时间点去看看外面的机会。
2、什么时候选择离开?当公司无法让你获得成长时,完成一个大项目时,或达到了一个期待已久的职场目标时。
需要强调的是,跳槽不是为了逃避问题,而是为了解决问题。不能因为项目难度大或人际关系不好,就撂挑子,不干,跑路。要“向内思考”从自己身上找原因,而不是从外部环境找借口。
3、怎么选择下一站?
4、如何谈 offer?
不主动分析产品需求的架构师,成为不了顶级架构师。
产品就像一座桥,一边连着用户需求,一边连着先进技术,产品经理从需求出发,架构师从技术出发,最终会师。
《创意选择》
这个世界需要天才般创造力的史蒂夫·乔布斯,但也需要像作者肯·科钦达这样优秀的工程师、设计师,只有一个好点子是打造不出优秀的产品的。一个想法到一个成形的产品之间有千山万水,跨越这段距离,需要像唐僧西行取经那般,打败一个又一个妖怪。而这,离不开一个个工程师、设计师以及管理者之间的戮力同心。
作者反复提及示例程序,从中我们能学到什么呢?我有以下几点思考:
灵感、协作、技艺、勤奋、决断力、品位、同理心,在 Apple 这样的环境工作,有一群优秀的同事相伴,我相信作者是幸福的,是享受工作的。当作者最后写到,到他准备离职时,大部分曾经一起工作的同事都离开了 Apple。那一刻,我内心有些难受,一个优秀的团队,就像一个家,离开未免都会有些失落。可是,我又想,他们那么优秀,肯定是去追寻下一个像 iPhone 那样惊世的作品了,所以不孤独。
毕竟,我们都要向前看,这就是人生。
工作压力太大,想要控制情绪是一件很难的事情。我曾不只一次在办公室里面看到小伙伴们吵得面红耳赤。我们不是圣人,无处释放的压力最终都要通过一些方式得到宣泄。
如果身边的同事或家人工作压力大,试着多一点理解。

家人的 Android 手机,经常被广告诱导安装各类垃圾 APP,真是令人深恶痛绝。相较而言,iOS 确实好多了,虽然避免不了各类开屏广告的诱导,但最多就是跳转浏览器或 App Store。
只不过,最近半年在 iOS 上经常收到各类垃圾短信,甚至在短信中都有个人的隐私信息,真是匪夷所思,黑色产业链太可怕了。
“多”不代表好,但“多”可能是历史包袱带来的,所以还需从辩证的视角来看待老一辈计算机前辈们的做法。
iOS 的创新之处就是大刀阔斧地做了减法,不仅内存隔离,外存也隔离,这自然就把进程间通讯的各种操作(锁、信号量、共享内存、文件系统、管道以及 socket 等)都给干掉了,而且还提高了安全等级。
最后,还剩下一个剪切板,可以猜测的到,很多 APP 都会在这里做文章。
微信正在做自己的内置输入法,我想这也是为了安全不得已而为之吧。
Who am I ?
Where did I come from ?
Where do I go to find out ?