写点什么

Docker 的学习体验

用户头像
DisonTangor
关注
发布于: 刚刚

由于兴致使然,便想学习一点 Docker 技术。于是,写了这篇学习 Docker 的体会。笔拙,见谅。

第一件事——把网线插上

相信很多人都被官网的《Sample application》的 docker build -t getting-started .给欺骗了。


fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/main/x86_64/APKINDEX.tar.gzWARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.11/main: temporary error (try again later)ERROR: unable to select packages:g++ (no such package):    required by: world[g++]make (no such package):    required by: world[make]python3 (no such package):    required by: world[python3]
复制代码


我查阅 Github 的 Issue 也走入了误区,添加了RUN echo -e "http://dl-cdn.alpinelinux.org/alpine/v3.11/main" > /etc/apk/repositories还是有问题


我于是修改了 dockerfile:


 # syntax=docker/dockerfile:1FROM node:12-alpineRUN ping dl-cdn.alpinelinux.org#  RUN echo -e "http://dl-cdn.alpinelinux.org/alpine/v3.11/main" > /etc/apk/repositoriesRUN apk add --no-cache python g++ makeWORKDIR /appCOPY . .RUN yarn install --productionCMD ["node", "src/index.js"]
复制代码


通过 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 核会更多。

发布于: 刚刚阅读数: 2
用户头像

DisonTangor

关注

怀揣一个武侠梦的男孩 2020.07.29 加入

还未添加个人简介

评论

发布
暂无评论
Docker的学习体验