Docker(三)Docker是如何工作的

摘自

https://mp.weixin.qq.com/s/SsXIuDqeze_et8vWQ8fr3g

一、Docker Client

也称为Docker客户端。其实就是Docker提供命令行界面工具,是许多Docker用户与Docker进行交互的主要方式。客户端可以构建,运行和停止应用程序,还可以远程与Docker_Host进行交互。

二、Docker daemon

Docker daemon是服务器组建,以Linux后台服务的方式运行,是Docker最核心的后台进程,我们也把它称为守护进程。它负责响应来自Docker Client的请求,然后将这些请求翻译成系统调用完成容器管理操作。该进程会在后台启动一个API Server,负责接受由Docker Client发送的请求,接受到的请求通过Docker daemon内部的一个路由分发调用,由具体的函数来执行请求。

我们大致可以将其分为以下三部分:

  • Docker Server
  • Engine
  • Job

Docker Daemon的架构

Docker Daemon可以认为是通过Docker Server模块接受Docker Client的请求,并在Engine中处理请求,创建出置顶的Job并运行。Docker Daemon运行在Docker host上,负责创建、运行、监控容器,构建、存储镜像。

运行过程的作用有以下集中可能:

  • 向Docker Registry获取镜像
  • 通过graphdriver执行容器镜像的本地化操作
  • 通过networkdriver执行容器网络环境的配置
  • 通过execdriver执行容器内部运行的执行工作

由于Docker Daemon和Docker Client的启动都是通过可执行文件docker 来完成的,因此两者的启动流程非常相似。Docker可执行文件运行时,运行代码通过不同的命令行flag参数,区分两者,并最终运行两者各自相应的部分。

docker --daemon = true

docker –d

docker –d = true

再由docker的main()函数来解析以上命令的相应flag参数,并最终完成Docker Daemon的启动。下图可以很直观地看到Docker Daemon的启动流程:

默认配置下,Docker daemon只能响应来自本地Host的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开TCP监听。我们可以照着如下步骤进行配置。

  1. 编辑配置文件/etc/systemd/system/multi-user.target.wants/docker.service。在环境变量ExecStart后面添加 -H tcp://0.0.0.0,允许来自任意 IP 的客户端连接。
  2. 重启docker daemon
  3. 通过以下命令即可实现与远程服务器通信。

    docker -H 服务器IP地址 info。

三、Docker Image

Docker image可以看作一个特殊的文件系统,除了提供运容器运行时所需要的程序、库、资源、配置等文件外,还包含了一些为运行时准备的参数(匿名卷,环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。我们可将Docker镜像看成只读模版,通过它可以创建Docker容器。我们可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被乘坐Dockerfile,通过执行docker build<docker-file>命令可以构建出Docker镜像

四、Docker Registry

Docker registry是存储docker image的仓库,它在docker生态环境中的位置如下图:

五、Docker Container

Docker 容器就是Docker镜像的运行实例,是真正运行项目程序、消耗系统资源、提供服务的地方。Docker Container提供了系统硬件环境,我们可以使用Docker Images这些制作好的系统盘,再加上我们所编写好的项目代码,run一下就可以提供服务了。

原文地址:https://www.cnblogs.com/ylxn/p/10509623.html

时间: 2024-08-28 15:29:11

Docker(三)Docker是如何工作的的相关文章

Docker笔记三 Docker镜像制作

Docker笔记三 Docker镜像制作 1.Docker镜像制作方法: docker commit 保存当前container的状态到镜像,生成image. docker build 利用dockerfile自动化生成image. 2.制作方法 docker commit方式 #启动镜像名称为centos的一个容器(container)  [[email protected] ~]#docker run -it centos /bin/bash #在容器内安装httpd服务 [[email p

Docker(三):Dockerfile 命令详解

上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dockerfile 的使用,这篇文章我们来继续了解 Dockerfile ,学习 Dockerfile 各种命令的使用. Dockerfile 指令详解 1 FROM 指定基础镜像 FROM 指令用于指定其后构建新镜像所使用的基础镜像.FROM 指令必是 Dockerfile 文件中的首条命令,启动构建流程后,Docker 将会基于该镜像构建新镜像,FROM 后的命令也会基于这个基础镜像. FROM语法格式为: FROM <i

浅谈Docker三两事

Docker 到底是个什么东西呢?我们在理解 Docker 之前,首先得先区分清楚两个概念,容器和虚拟机.可能很多人都用过虚拟机,而对容器这个概念比较的陌生.我们用的传统虚拟机如 VMware , VisualBox 之类的需要模拟整台机器包括硬件.每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用.每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统.而容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配.容器包含应用和其所有的依赖

Docker三

将本地镜像发布到阿里云 有时候需要共享镜像或者习惯使用自己定义的镜像,可以注册私有仓库,国内推荐使用阿里云 步骤: 1.登录阿里云容器镜像服务:https://cr.console.aliyun.com/cn-hangzhou/repositories 2.将镜像推送到阿里云 # 登录阿里云的docker仓库 $ sudo docker login --username=[用户名] registry.cn-hangzhou.aliyuncs.com # 创建指定镜像的tag,归入某个仓库 $ s

docker 三.基本概念

Docker 基本概念 一.镜像 1.1 什么是镜像 Docker的镜像是一个只读的模板,用来创建容器. 类似虚拟机镜像,可以将它理解为一个面向docker引擎的只读模版,包含了文件系统. 例如 一个镜像里面有一个完整的centos操作系统的环境,可以把它称为一个centos镜像.镜像里面安装了nginx,可以把它称为一个nginx镜像. 1.2 docker镜像 Docker提供了一个很简单的机制来创建镜像,或修改现有的镜像,你可以将你创建好的镜像直接分享给别人.比如你们团队的项目要求统一的开

(三) Docker 常用操作与CentOS7 防火墙命令

参考并感谢 Docker 常用命令 https://docs.docker.com/engine/reference/commandline/docker/ Docker 登录docker账户 docker login -u 用户名 -p 密码 根据本地待上传镜像 修改新镜像,新镜像名称需要与hub中的repository保持一致 docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] 查看所有镜像 docker images 查看特定镜像 docker

DOCKER 三架马车

1. Docker Compose 介绍 Docker Compose是Docker官方编排(Orchestration)项目之一,负责快速的部署分布式应用.其代码目前在https://github.com/docker/compose上开源.Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)」,其前身是开源项目Fig. 前面我们已经学习过使用一个Dockerfil

【Linux】【Services】【Docker】Docker File

Docker Images: docker commit Dockerfile:文本文件,镜像文件构建脚本: Dockerfile:由一系列用于根据基础镜像构建新的镜像文件的专用指令序列组成: 指令:选定基础镜像.安装必要的程序.复制配置文件和数据文件.自动运行的服务以及要暴露的端口等: 命令:docker build: 语法:指令行.注释行和空白行: 指令行:由指令及指令参数构成: 指令:其字符不区分大小写:约定俗成,要使用全大写字符: 注释行:#开头的行,必须单独位于一行当中: 空白行:会被

理解Docker :Docker 网络

本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 (4)Docker 容器的隔离性 - 使用 cgroups 限制容器使用的资源 (5)Docker 网络 1. Docker 网络概况 用一张图来说明 Docker 网络的基本概况: 2. 四种单节点网络模式 2.1 bridge 模式 Docker 容器默认使用 bridge 模式的网络.其特点

docker学习---docker基础知识

目录 docker的基础 1.安装docker 2.使用镜像 3.镜像迁移|导入和导出 4.docker Hub介绍 5.搭建私有镜像仓库 5.1.docker开源的镜像分发工具--docker Registry 5.2.harbor部署 6.使用容器 7.容器导出和导入 8.数据卷 9.网络访问 10.dockerfile 10.1.基础指令 10.2.控制指令 10.3.引入指令 10.3.执行指令 10.4.配置指令 10.5.特殊用法 docker的基础 1.安装docker yum i