Docker简介

docker是一个应用广泛的容器化平台,旨在解决软件开发、部署、运维中的许多问题,让我们来看下docker架构:

Docker架构

Docker采用客户端-服务器(C/S)架构模式,其中Docker客户端(Client)与Docker守护进程(Daemon)进行通信。用户通过Docker客户端发送请求给Docker守护进程,后者负责处理这些请求并返回结果

核心组件

  • Docker Client:用户与Docker交互的接口,可以是命令行工具或API。
  • Docker Daemon:运行在主机上的后台进程,负责构建、运行和分发Docker容器。
  • Docker Image:类似于一个只读模板,包含了应用程序运行所需的一切,如操作系统、应用程序代码、运行时等。
  • Docker Container:基于镜像创建的实例,提供了隔离的环境来运行应用程序。
  • Docker Volume:用于持久化数据的存储卷,可以挂载到多个容器中。
  • Docker Registry:存储和分发镜像的仓库,类似于软件包管理系统。

image.png

image.png

image.png

数据卷

为什么使用数据卷

image.png

进入到容器后进行编辑,发现command not found,这是因为docker容器中只存放了应用程序运行必要文件,为了节省空间,像编辑器的这些文件vim等都没有,那就出现一个问题,如果我想更改容器内的文件,该如何实现,这就是数据卷的作用了

什么是数据卷

数据卷是一个虚拟目录,是容器内目录和宿主机目录之间映射的桥梁。
卷是虚拟的,但是对应的宿主机的目录是真实的,容器的目录跟数据卷之间挂载,这样桥梁就搭建起来了,实现宿主机和容器目录之间的双向绑定,容器内的目录更改,宿主机的目录也会更改,宿主机上有非常高级的编辑器,所以在宿主机上进行更改就方便多了
image.png

命令

image.png

挂载方式一

创建完卷后,需要与容器挂载,怎么实现挂载

  • 在执行docker run命令时,使用-v 数据卷:容器内目录 可以完成数据挂载
  • 当创建容器时,如果挂载了数据卷且数据卷不存在,会自动创建数据卷

image.png
容器内目录需要根据业务情况选定

挂载方式二

匿名卷:容器运行自动创建的卷
匿名卷有坏处,不方便
需要实现基于宿主机目录实现mysql数据目录、配置文件、初始化脚本的挂载(查看官方镜像文档)

  • 在执行docker run命令时,使用-v 本地目录:容器内目录 可以完成数据挂载
  • 本地目录必须以“/”或“./”开头,如果直接以名称开头,会被识别为数据卷而非本地目录
    • -v mysql: /var/lib/mysql会被识别为一个数据卷叫mysql
    • -v ./mysql: /var/lib/mysql 会被识别为当前目录下的mysql目录

自定义镜像

镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程

层(Layer)

添加安装包、依赖、配置等,每次操作都形成新的一层
image.png

这样做可以共享一些基础的镜像image.png
image.png
我们看到这样的结构是很清晰的,但是操作有些复杂,你需要去找镜像,哪些依赖等等进行打包,挺麻烦。
docker解决了上述问题,你只需要描述清楚那些层,docker自动帮我们完成构建

Dockerfile

image.png

实例:构建一个ubuntu镜像
image.png

image.png

image.png

网络配置

image.png

DockerCompose

image.png
image.png

image.png

Docker 架构及工作原理 - docker动态 - docker中文社区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值