理解了镜像和容器,你就掌握了Docker的80%

一、Docker的架构和底层技术1.Docker Platform(平台)

  • Docker提供了一个开发、打包、运行App(应用application)的平台
  • 把app和底层infrastructure(基础设备)隔离开来

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
2.Docker Engine
2.1 组成
  • 后台进程(dockerd)
  • 用于一些后台的操作 , 如image、container、网络及存储的管理
  • REST API Server
  • 用于dockerd和docker之间通信的接口服务
  • CLI接口(docker)运行docker version命令是显示的client 版本和server engine版本 , client和server之间是一个cs架构的

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • 运行docker version命令可以看到客户端版本与服务端engine版本 , 查找docker进程可以看到后台是执行的dockerd进程

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
3.Docker Architecture(架构)
理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
4.底层技术支持
Namespaces:做隔离pid、net、ipc、mnt、uts
Control groups:做资源限制
Union file systems:Container和image的分层
 
二、Docker Image(镜像)1.概述
  • 文件和meta data的集合(root filesystem)
  • 分层的 , 并且每一层都可以添加改变删除文件 , 成为一个新的image
  • 不同的image可以共享相同的layer(层)
  • image本身是read-only(只读)

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • 查看本地存在的image
docker image ls 
2.获取image的第一种方式
Build from Dockerfile
Docker提供一个配置文件Dockerfile , 就好比之前博主使用Vagrant工具时的Vagrantfile文件一样 , 通过Dockerfile文件就可以去定义一个docker image镜像 , build这个dockerfile文件就可以构建出一个image镜像
  • 在cdtaogang目录下创建dockerfile文件 , 内容如下

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • 执行docker build命令进行构建镜像 , -t 镜像名称 , 后面的.是表示当前dockerfile路径
docker build -t cdtaogang123/redis:latest .
  • 提示如下超时 , docker安装后默认没有daemon.json这个配置文件 , 需要进行手动创建 , 配置文件的默认路径:/etc/docker/daemon.json , 在阿里云中复制加速器地址 , 进行添加
{"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]}
理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • 重启生效
sudo systemctl daemon-reloadsudo systemctl restart docker
理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • 再次build构建 , 显示成功

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • 在执行build构建时 , dockerfile文件中每一行代码都表示一个步骤 , 一共有7行代码 , 所以build时 , 会显示执行这7个步骤

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • 此时查看本地image镜像就可以看到以上创建的镜像了

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
3.获取image的第二种方式
Pull from Registry
类似github 仓库 , 可以git clone拉取仓库的文件 , 也可以将文件push到仓库中 , 那么docker pull则是在docker hub上去拉取你要的镜像
  • 在docker hub网站上查看image基础镜像

理解了镜像和容器,你就掌握了Docker的80%

文章插图