Docker的学习体验
由于兴致使然,便想学习一点Docker技术。于是,写了这篇学习Docker的体会。笔拙,见谅。
第一件事——把网线插上
相信很多人都被官网的《Sample application》的 docker build -t getting-started .
给欺骗了。
fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/main/x86_64/APKINDEX.tar.gz
WARNING: 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:1
FROM node:12-alpine
RUN ping dl-cdn.alpinelinux.org
# RUN echo -e "http://dl-cdn.alpinelinux.org/alpine/v3.11/main" > /etc/apk/repositories
RUN apk add --no-cache python g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["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核会更多。
最新文章
- web前端浮动、清浮动问题
- AxureRP8实战手册(基础21-30)
- Java InMemoryCache
- CentOS yum安装Apache + PHP + Tomcat7 + MySQL
- 树状数组+STL FZU 2029 买票问题
- HTTP 笔记与总结(2 )HTTP 协议的(请求行的)请求方法 及 (响应行的)状态码
- key-value数据库
- 自定义延时查询控件---valen
- mysql 分页存储过程 一次返回两个记录集(行的条数,以及行记录),DataReader的Read方法和NextResult方法
- POJ3613 Cow Relays [矩阵乘法 floyd类似]
- 20151225jquery学习笔记---折叠菜单UI
- Different Ways to Add Parentheses——Leetcode
- 智能卡 APTU命令
- php 大流量网站访问
- artdialog的图片,标题,以及关闭按钮不显示的问题
- MVC3和MVC4中CRUD操作
- scrapy发送邮件
- linux系统调用之文件系统操作
- ocLazyLoad按顺序加载
- cf789d 图论计数,自环闭环