Docker 的学习体验
由于兴致使然,便想学习一点 Docker 技术。于是,写了这篇学习 Docker 的体会。笔拙,见谅。
第一件事——把网线插上
相信很多人都被官网的《Sample application》的 docker build -t getting-started .
给欺骗了。
我查阅 Github 的 Issue 也走入了误区,添加了RUN echo -e "http://dl-cdn.alpinelinux.org/alpine/v3.11/main" > /etc/apk/repositories
还是有问题
我于是修改了 dockerfile:
通过 Ping 了解到网线没插于是我注释了ping
,直接运行
$sudo docker build --network=host -t getting-started .
等待 build 结束,执行:
$sudo docker run --network=host -dp 3000:3000 getting-started
第二件——学会使用梯子
根据安装 Arch 和 Gentoo 的体验,由于国内外网络速度差异太大,这里我找了一些 apline 的镜像供各位参考。
第三件——linux 是一个很好的老师
dockerfile 的内容以 bash 操作为主。很多 Concept 都与 linux 相关。docker 的 cli 多数和 bash 以及 gcc 类似,如 ps,rm, build, run, stop 等等
docker volume 就很像简易版的 LVM
docker compose 和 cmake 的操作近似
第四件——区分 Docker Daemon、Images 和 Container 的三者关系
建议参考 git 的原理
第五件——和学习 Java 一样多研究 Reference
https://docs.docker.com/reference/
结论
Docker 的上手难度低,之前浪费时间看书,现在有点后悔。虽然我已经在开发中使用 Docker 的 Postgres 和 Memcached 作为 DB 的容器, 但是真正要想玩转 Docker,还是需要理解运维服务的一些技术。很多人都认为 Docker 是微服务,其实不是他只是微服务的载体。如果说 Docker 是进程,那么微服务就是函数。程序可以由多个函数组成,Docker 也可以装入多个微服务。Docker 的目的很简单——有效的利用资源和分配资源。但是我认为 Docker 存在对内存和 CPU 的依赖性,这会导致我们将来的计算机结构内存会更大,CPU 核会更多。
版权声明: 本文为 InfoQ 作者【DisonTangor】的原创文章。
原文链接:【http://xie.infoq.cn/article/f3d173fa726f020bb2b110868】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论