Docker使用要求:
支持 namespaces和cgroups
Docker标准:
OCI:容器运行时制定的一个开放的工业标准
OCF:容器格式(runC 是他的一个实现)
runC是Docker按照开放容器格式标准(OCF, Open Container Format)制定的一种具体实现。runC是从Docker的libcontainer中迁移而来的,实现了容器启停、资源隔离等功能。Docker默认提供了docker-runc实现,事实上,通过containerd的封装,可以在Docker Daemon启动的时候指定runc的实现。我们可以通过启动Docker Daemon时增加–add-runtime参数来选择其他的runC。
为什么需要runC
Docker一开始就一家独大,并且并不是一种开放的态姿态在做,所以很早之前Google就投资了CoreOS来做竞争的容器–Rocket。那时是三家鼎立:Docker/Rocket/Warden,为了避免惨烈的竞争,大家终于统一意见,决定成立OCI做统一的容器运行时—RunC,OCI成立后加入了大约50家厂商。出于对Docker封闭化商业式发展的担心,OCI商讨出这种方案:以RunC为核心重新构建生态圈,并且通过插件来弱化容器在CaaS生态圈的重要性。
镜像站点:
仓库地址
注册账号后,在客户端登入,可以推送存储自己的仓库和github类似
docker加速器:
daocloude,阿里云,中国科技大学
方法在daemon.json 中加入:地址多个地址使用逗号分隔
Docker架构:
Docker使用C/S架构,Client 通过接口与Server进程通信实现容器的构建,运行和发布。client和server可以运行在同一台集群,也可以通过跨主机实现远程通信。
主要分为三部分:
Docker Daemon:
可以认为是通过Docker Server模块接受Docker Client的请求,并在Engine中处理请求,然后根据请求类型,创建出指定的Job并运行,运行过程的作用有以下几种可能:向Docker Registry获取镜像,通过graphdriver执行容器镜像的本地化操作,通过networkdriver执行容器网络环境的配置,通过execdriver执行容器内部运行的执行工作等。
Docker Client:
主要是对Docker Daemon发起请求,命令行工具,方便用户操作
Docker Registers:
提供了获取镜像的地方,提供了用户认证,用户可以提交自己的镜像到仓库仓库名就是镜像名,一个仓库只有一种镜像
registers 如何标记仓库?
镜像名:tag
如:nginx:1.1
特殊Tag:
latest:最新版本
最小版本(开发环境中不建议使用)
Docker 中的资源
镜像: 静态,底层只能读不能写,只有安装好的只能读之前新建的那家
容器: 动态,有生命周期
tips:镜像和容器相当于是可执行文件和进程的区别
对于docker 的对象(资源)也提供了可以增删盖查的http接口
docker命令
分组类:
单独类:
一个有意思的镜像busybox
每个镜像只能跑一个程序,也都有一个默认的程序,也可以修改这个默认程序
命令:docker 可选 image commond args
各种命令的使用使用help 进行了解
参数 -it 交互式运行
参数 -d 后台运行
Docker 日志
所有日志都放在控制台因为一个进程没必要把日志放在容器的文件中,一方面是不好调试,第二是不合适
docker logs 容器名
docker logs -f -t --tail 100 orderer.example.com
Docker network
网络:桥接 默认172网段 使用nat 地址转换外面可以访问,并且支持多种网络模式