Docker读书笔记_2021-01-17

语言: CN / TW / HK

目标:解释使用Docker原因,示范使用方法,如何与软件开发流程结合。

什么是容器?

容器是对应用程序以及其依赖关系的封装。与虚拟机一样拥有一个被隔离的操作系统实例,用来运行应用程序。

容器优点:

  • 容器能与主机操作系统共享资源,相比在主机上直接运行程序,容器的性能损耗非常低。
  • 容器具有可移植性。
  • 容器是轻量级的
  • 容器是对应用程序以及其依赖封装,意味着不用担心环境差异、依赖关系、

微服务是容器的最主要用例。微服务是一种软件系统开发和构成形式,由小而独立的组件组成,组件之间通过网络互相连接。

传统单一架构软件需要扩展时,纵向扩展(向下扩展)是唯一选择。只能把机器升级,增加内存和使用更强大的CPU。

微服务设计则是横向扩展,为了满足需求只需要部署多台机器分负载即可。


Docker基本操作

安装Docker

Linux安装和window都可安装,需要可自行百度。

基本命令

docker inspect 容器ID或名称 获取关于某个容器的信息

docker diff 容器ID或名称 找出容器的IP地址

docker logs 容器名称 得知容器里发发生的一切事情

exit 退出容器

docker ps  列出正在运行的容器

docker ps -a 列出所有容器,包括已退出容器

docker start 容器重启

docker rm 容器 删除容器

docker ps -aq -f status=exited 删除所有已停止的容器 可写成一个shell脚本 docker rm -v $(docker ps -aq -f status=exited) -v参数在这里的作用意味着当所有docker管理的数据卷已经没有和任何容器关联时一律删除

为了避免已停止的容器数量不断增加,可以在执行docker run的时候加上--rm 参数,作用是当容器退出时,容器和相关的系统文件会被一并删除

容器转镜像 docker commit 无论容器是运行中或者停止都可 docker commit 容器的名称 新镜像的名称  存放镜像仓的名称  执行成功后返回镜像的唯一识别码

Dockerfile

Dockerfile是一个描述如何创建镜像所需步骤的文本文件  通过Dockerfile生成镜像命令 docker build -t  dockerfile目录路径

联合文件系统(联合挂载)

联合文件系统允许多个文件系统叠加,并表现一个单一的文件系统。文件夹中的文件可以来自多个文件系统。docker中支持多种不同的联合文件系统实现,可以通过docker info 命令查看输出结果中的“Storage Driver”值得知。

Docker的镜像由多个不同的层组成,每一个层都是一个只读的文件系统。

dockerfile里的每个指令都会创建一个新的层,这个层将位于前一个层之上。当一个镜像被转化成一个容器时,docekr引擎会在镜像之上添加一个位于最上层可读写文件系统

容器具备以下几种状态:已创建created      重启中 restarting      运行中running     已暂停 paused     已退出 exited

术语

寄存服务  负责托管和发布镜像的服务 默认dorcker hub

仓库    一组相关镜像(通常是一个应用或服务的不同版本) 的集合

标签  仓库中镜像的识别号


Docker中网络连接的改变

使用 - - link命令把容器链接起来。

通过docker run  --link  现存器:新容器 链接起来,且已新容器作为现存容器的主机名,将新容器指向现存容器的IP地址。

Docker通过数据卷让容器与主机或容器与其他容器之间轻松共享数据。数据卷是直接在主机挂载的文件或目录,不属于常规联合文件系统的一部分,意味着允许与其他容器进行共享。

声明数据卷的两种方法:

  1. Dockefile里使用VOLUME指令   VOLUME /data
  2. 执行docker run时使用 -v 参数    docker run -v /data 目录 

默认情况下,目录或文件挂载在主机Docker安装目录下,docker run  命令可以指定用于挂载的主机目录 。

 

分享到: