文章目录
- Docker简介
- Docker安装
- 前提:
- 三要素
- 安装步骤
- 阿里云镜像加速器配置
- 测试运行HelloWorld镜像
- Docker 常用命令
- 帮助命令
- 镜像命令
- 容器命令
- Docker镜像
- Docker容器数据卷
- DockerFile解析
Docker简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker的理念便是在任何地方构建、发布并运行任何应用,做到一次封装,到处运行
- 与传统虚拟机的对比
传统虚拟机:资源占用多、冗余步骤多、启动慢
Docker:容器内的应用进程直接运行于宿主内核,更轻便、每个容器互相隔离,不会互相影响,区分计算资源
Docker安装
前提:
Docker 运行在CentOS7上,要求系统为64位,系统内核版本为3.10以上
Docker 运行在CentOS6.5或更高版本的CentOS上,要求系统为64位、系统内核版本为2.6.32-431或者更高版本
三要素
- 镜像:image文件生成的容器实例,本身也是一个文件,称为镜像文件
- 容器:一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器
- 仓库:就是存放了一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候从仓库拉下来就可以了
安装步骤
- CentOS6
- CentOS 6.7 安装Docker
- Docker安装遇到No package docker-io available解决办法
- CentOS7
阿里云镜像加速器配置
- 注册并登录阿里云,获取个人专属加速器地址
- 配置本机Docker运行镜像加速器
- 修改配置文件
- CentOS6的配置文件:
/etc/sysconfig/docker
- CentOS7的配置文件:
/etc/docker/daemon.json
- 重启docke.service即可
测试运行HelloWorld镜像
- run运行流程
Docker 常用命令
帮助命令
镜像命令
容器命令
Docker镜像
- 是什么?
镜像是一种轻量级、可执行的独立软件包,用来打包运行环境和基于运行环境开发的软件,它包含某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件 - 基础:UnionFS(联合文件系统
特性:一次同时加载多个文件系统,但从外面看来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终文件系统就会包含所有底层的文件和目录 - 镜像运行原理
- 特点:
docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层” - 镜像commit
- docker commit提交容器副本使之成为一个新的镜像
- docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:【标签名】
- 案例:
- 初次启动tomcat无法访问404:
- docker run -it -p 8888:8080 tomcat: 启动tomcat容器
- 提交commit
Docker容器数据卷
- 是什么
Docker容器产生的数据,如果不通过commit生成新的镜像,使得数据作为镜像一部分保存下来,那么当容器删除后,数据自然也就没有了。为了能保存数据在docker中我们使用卷 - 能干嘛
容器的持久化
容器间继承+共享数据 - 数据卷
- 容器内添加
- 容器内数据共享
细节:容器停止后,主机修改后数据依然同步 - DockerFile添加
- 根目录下新建mydocker文件夹并进入
- File构建
- build后生成镜像
- run容器
- 主机对应默认地址(inspect命令)
- 数据卷容器
- 定义:命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器
- 容器间传递共享(–volumes-from)
细节:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它止
DockerFile解析
- 是什么?
- DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本
- 构建三步骤
- 编写DockerFile文件
- docker build
- docker run
- DockerFile构建过程解析
- DockerFile内容基础知识
- 每条保留字指令都必须为大写字母且后面要跟随至少一个参数
- 指令按照从上到下,顺序执行
- #表示注释
- 每条指令都会创建一个新的镜像层,并对镜像进行提交
- Docker执行DockerFile的大致流程
- docker从基础镜像运行一个容器
- 执行一条指令对容器作出修改
- 执行类似docker commit的操作提交一个新的镜像层
- docker再基于刚提交的镜像运行一个容器
- 执行dockerfile中的下一条指令直到所有指令都执行完成
- 总结
- DockerFile是软件的原材料
- Docker镜像是软件的交付品
- Docker容器则可以认为是软件的运行态
- DockerFile面向开发,Docker镜像成为交付标椎,Docker容器则涉及部署和运维
- DockerFile体系结构