docker--基础(一)

文档(十分详细)
仓库地址述
安装教程

docker设想是交付运行环境如同海运,OS如同一个货轮,每一个在OS基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。

容器技术

在容器技术出现之前都是使用虚拟机技术

虚拟机:使用一个软件,通过这个软件可以虚拟出来一台或者多台电脑。

docker容器技术,也是一种虚拟化技术。

虚拟机技术的缺点:

  1. 资源占用多
  2. 冗余步骤多
  3. 启动很慢

比较Docker和虚拟机的不同:

  • 传统的虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个操作者系统上安装和运行软件
  • 容器内的应用直接运行在宿主机上,容器时没有自己的内核的,也没有虚拟我们的硬件,所以轻便。
  • 每个容器之间时隔离的,每个容器内都有一个自己的文件系统,互不影响。

docker架构

  1. 客户端-服务器架构。
  2. Docker客户端与 Docker守护进程对话,后者负责构建、运行和分发 Docker 容器的繁重工作。
  3. Docker 客户端和守护程序可以 在同一系统上运行,或者您可以将 Docker 客户端连接到远程 Docker 守护程序。Docker 客户端和守护程序使用 REST API,通过 UNIX 套接字或网络接口进行通信。
  4. 另一个 Docker 客户端是 Docker Compose,它允许您使用由一组容器组成的应用程序。

在这里插入图片描述

基础概念

仓库

就是存放镜像的地方。仓库分为共有仓库和私有仓库。

  • DockerHub(默认国外的)
  • 阿里云。。。都有容器容器服务(可以配置镜像加速!)

docker对象

镜像

  1. 一个docker镜像好比一个只读模板,可以通过这个模板来创建容器服务。通过这个镜像看可以创建多个容器(最终服务运行或者运行就是在容器中的)。
  2. 通常,一个图像基于另一个图像,并带有一些额外的自定义。
  3. 自定义镜像(创建自己的镜像- Dockerfile )

容器:

目前就可以把这个容器理解为就是一个简易的Linux系统

用来干嘛:

容器是图像的可运行实例。Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的。

启动,停止,删除,基本命令

容器隔离

Docker 使用一种称为容器namespaces的技术来提供隔离的工作空间。当您运行容器时,Docker 会为该容器创建一组 命名空间。

这些命名空间提供了一层隔离。容器的每个方面都在单独的命名空间中运行,并且它的访问权限仅限于该命名空间。

容器的文件系统

当一个容器运行时,它使用图像中的各个层作为其文件系统。每个容器还有自己的“暂存空间”来创建/更新/删除文件。任何更改都不会在另一个容器中看到,即使它们使用相同的图像。

容器数据的暂存
默认情况下,将其数据存储在容器文件系统中的SQLite 数据库中。/etc/todos/todo.db
其中所有数据都存储在一个文件中。虽然这对于大型应用程序来说不是最好的,但它适用于小型演示。

通过创建一个卷并将其附加(通常称为“挂载”)到存储数据的目录,我们可以持久化数据
当我们的容器写入todo.db文件时,它将被持久化到卷中的主机。

用来干嘛:

  1. 容器内数据的持久化
  2. 与其他容器或者应用共享数据

特点

  • 数据卷可在容器之间共享或重用数据

  • 数据卷中的更改不会包含在镜像的更新中

  • 卷中的更改可以直接生效

  • 数据卷的生命周期一直持续到没有容器使用它为止

分类

默认 Docker 引擎安装支持的两种主要卷类型

命名卷(具名挂载)

使用了一个命名卷来将数据持久化到我们的数据库中。如果我们只是想存储数据,命名卷非常好,因为我们不必担心数据存储在哪里。

-v 卷名:容器内路径
匿名挂载
-v 容器内路径
绑定挂载

使用绑定挂载,我们可以控制主机上的确切挂载点。我们可以使用它来持久化数据,但它通常用于向容器中提供额外的数据。

-v 宿主机路径:容器内路径

查看数据通过卷实际存在哪 ?

docker volume inspect 卷名

Mountpoint是存储数据的磁盘上的实际位置。请注意,在大多数机器上,您需要具有 root 访问权限才能从主机访问此目录。
在 Docker Desktop 中运行时,Docker 命令实际上是在您机器上的一个小型 VM 中运行。如果您想查看 Mountpoint 目录的实际内容,您需要首先进入 VM。

如果是使用windows11 + WSL2 ,那么卷的存放路径如下:

\\wsl.localhost\docker-desktop-data\version-pack-data\community\docker\volumes

基本命令

docker volume create 卷名   #创建数据卷
docker volume inspect 卷名 #显示数据卷的详细信息
docker volume ls         #列出所有的数据卷
prune      #删除所有未使用的 volumes,并且有 -f 选项
rm         #删除一个或多个未使用的 volumes,并且有 -f 选项

容器网络

每个容器都有自己的IP地址,不同容器之间要通信需要在同一网络上

基本命令

docker network create 网络名

环境变量

镜像分层

可以看到用于在图像中创建每个图层的命令。

docker image history 镜像名

每条线代表图像中的一层。此处的显示在底部显示基础,在顶部显示最新层。使用它,您还可以快速查看每一层的大小,帮助诊断大图像。

获得完整的输出

 docker image history --no-trunc 镜像名

镜像层缓存

一旦层发生变化,所有下游层也必须重新创建

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值