▍什么是Docker?

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

▍什么服务模式?C/S模式。Docker是一个客户端-服务端(c/s)的架构程序。docker是以客户端(client)和守护进程(server)来运行。

▍什么通信方式?

Unix的socket套接字,如:unix:///var/run/docker/sock(默认连接方式)

▍那几部分组成?

  • Docker Client客户端
  • Docker Daemon服务端(守护进程)
  • Docker Image 镜像
  • Docker Container 容器

▍什么是Docker 仓库(hub)?

仓库(Repository)是集中存放镜像的地方。目前 Docker 官方维护了一个公共仓库 dDocker Hub。大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。

▍什么镜像(image)?

可理解为一个面向Docker引擎的只读模板,包含了文件系统。如:一个镜像可以只包含一个完整的操作系统环境,也可以安装了其他的应用程序。通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像。

▍如何构建镜像?

即创建一个镜像,它包含安装运行所需的环境、程序代码等。这个创建过程就是使用 Dockerfile 来完成的。默认是从 Docker Hub 公共镜像源下载。

Dockerfile 的作用是从无到有的构建镜像。它包含安装运行所需的环境、程序代码等。这个创建过程就是使用 Dockerfile 来完成的。Dockerfile 为 docker build 命令准备的,用于构建一个自定义的 image 镜像。

在docker-compose里也可以用来实时 build。docker-compose.yml 为 docker-compose 准备的脚本,可以同时管理多个镜像,多个镜像之间可以使用官方 image 、和自定义的 Dockerfile 构建的 image 混合编排容器以及各种网络端口定义、储存空间定义等。

如果 image 镜像是从 docker hub registry 拉取下来的,那么 Dockerfile 就不需要;如果镜像是需要 build 的,那就需要提供 Dockerfile .

Dockerfile 就是记录了一个镜像的制作过程。把脚本把安装过程全部记录下来,再次安装的时候,执行脚本就行了。只要有了 Dockerfile 脚本文件(shell脚本), 只需执行 docker build . 就能制作镜像,而且 Dockerfile 就是文本文件,修改也很方便。

▍容器是如何启动的?

容器最终运行起来是通过拉取构建好的镜像,通过一系列运行指令(如端口映射、外部数据挂载、环境变量等)来启动服务的。区别:

  • 针对单个容器,这可以通过 docker run 来运行。
  • 针对多个容器,这可以通过 docker-compose up 来运行。

▍如何运行多个容器?而如果涉及多个容器的运行(如服务编排)就可以通过 docker-compose 来实现,它可以轻松的将多个容器作为 service 来运行(当然也可仅运行其中的某个),并且提供了 scale (服务扩容) 的功能。docker-compose 是编排容器的。例如,你有一个php镜像,一个mysql镜像,一个nginx镜像。如果没有docker-compose,那么每次启动的时候,你需要敲各个容器的启动参数,环境变量,容器命名,指定不同容器的链接参数等等一系列的操作,相当繁琐。

而用了docker-composer之后,你就可以把这些命令一次性写在docker-composer.yml文件中,以后每次启动这一整个环境(含3个容器)的时候,你只要敲一个 docker-composer up 命令就可以了docker-compose 是解决项目需要哪些镜像、每个镜像怎么配置、要挂载哪些 volume、映射哪些端口 等等信息,都包含在 docker-compose.yml 里。要启动服务,只需要 docker-compose up 就行,停止也只需要 docker-compse stop/down

▍Dockerfile与docker-compse.yml 文的区别?

  • Dockerfile 记录单个镜像的构建过程
  • docker-compse.yml 记录一个编排容器(多个镜像)的构建过程。

工具系列 | Docker基本概念小结的更多相关文章

  1. 工具系列 | Docker基本概念

    1.什么是docker? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化. ...

  2. 菜鸟系列docker——docker基本概念(1)

    docker基本概念 1.准备 这里先介绍容器技术,后续再介绍docker.docker是容器的一种,除docker以外,还存在coreos.不过在当前趋势下容器和docker基本上可以划为等号了. ...

  3. Docker 系列一(概念原理和安装).

    一.概念原理 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间 ...

  4. 后端技术杂谈9:先搞懂Docker核心概念吧

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  5. Docker教程:docker的概念及安装

    http://blog.csdn.net/pipisorry/article/details/50754385 Why docker 对于运维来说,Docker提供了一种可移植的标准化部署过程,使得规 ...

  6. Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指。

    Docker简介 Docker是开源应用容器引擎,轻量级容器技术. 基于Go语言,并遵循Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发 ...

  7. SQL 工具系列一

    1.误删除数据恢复篇 ApexSQL Recover   可以恢复Delete Truncate  drop,恢复 二进制大型对象 测试版本  每10行才会恢复 评估版本下载地址:只能用14天 所以基 ...

  8. Docker学习—概念及基本应用

    1.Doker基本概念: Docker架构: Docker使用客户端-服务器架构.Docker客户端与Docker守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作  相关描 ...

  9. Map工具系列-08-map控件查看器

    所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...

随机推荐

  1. 2019-6-11-WPF-如何在应用程序调试启动

    title author date CreateTime categories WPF 如何在应用程序调试启动 lindexi 2019-06-11 09:32:35 +0800 2018-2-13 ...

  2. 大侦探福老师——幽灵Crash谜踪案

    闲鱼Flutter技术的基础设施已基本趋于稳定,就在我们准备松口气的时候,一个Crash却异军突起冲击着我们的稳定性防线!闲鱼技术火速成立侦探小组执行嫌犯侦查行动,经理重重磨难终于在一个隐蔽的角落将其 ...

  3. oracle函数greatest(exp1,exp2,exp3,……,expn)

    [功能]返回表达式列表中值最大的一个.如果表达式类型不同,会隐含转换为第一个表达式类型. [参数]exp1……n,各类型表达式 [返回]exp1类型 [示例] SELECT greatest(10,3 ...

  4. @noi - 172@ 追捕大象

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 在一块平原上有一头大象. 平原被分成 n×m 个格子.初始时大象 ...

  5. Fiddler快速入门

    Fiddler是一个免费.强大.跨平台的HTTP抓包工具.Wireshark也是一个强大的抓包工具,不过Wireshark是一个通用的抓包工具,主要精力放在各种协议上了,针对HTTP的特定功能较少.所 ...

  6. 关于心跳ajax请求pending状态(被挂起),stalled时间过长的问题。涉及tcp连接异常。

    环境:景安快云服务器(听说很垃圾,但是公司买的,我也刚来),CentOS-6.8-x86_64,Apache,MySQL5.1,PHP5.3. 问题:现公司有一个php系统,需要重复向后台发送ajax ...

  7. Laravel实现找回密码及密码重置的例子

    https://mp.weixin.qq.com/s/PO5f5OJPt5FzUZr-7Xz8-g Laravel实现找回密码及密码重置功能在php实现与在这里实现会有什么区别呢,下面我们来看看Lar ...

  8. Python--day30--网络基础

    单波: 查找mac:

  9. 11584 - Partitioning by Palindromes——[DP]

    题意分析: 题目比较容易理解,以d[i]表示前i个字符的最优解,状态转移方程 d[i]=min{d[j]+1| [j+1~i]为回文串} 代码如下: #include <cstdio> # ...

  10. P1088 上台阶

    题目描述 楼梯有 \(n(1 \le n \le 50)\) 阶台阶,上楼时可以一步上 \(1\) 阶,也可以一步上 \(2\) 阶,也可以一步上 \(3\) 阶,编程计算共有多少种不同的走法. 输入 ...