Docker合集第一期

6. Docker

官网:https://www.docker.com/

6.1 Docker简介

Docker是一种开源的容器化平台,可以帮助开发人员打包、发布和运行应用程序。

Docker的核心组件包括Docker Engine、Docker Hub和Docker CLI。其中,Docker Engine是Docker的核心引擎,用于构建、运行和管理Docker容器;Docker Hub是Docker的公共镜像库,可以存储和分享Docker容器镜像;Docker CLI是Docker的命令行界面,可以帮助开发人员管理Docker容器。

6.1.1 Docker的跨系统性

Docker 能够在不同的操作系统之间适配的原因是因为它利用了操作系统提供的虚拟化技术。具体来说,Docker 使用了 Linux 内核提供的 cgroupsnamespace 等功能来实现容器化,这些功能可以隔离应用程序和宿主操作系统之间的资源和环境。

在 Windows 和 macOS 上, Docker 利用了它们自己的虚拟化技术,分别是 Hyper-Vxhyve。这些技术可以在 Windows 和 macOS 上创建虚拟机,然后在虚拟机中运行 Linux 系统和 Docker 引擎,从而实现 Docker 在不同操作系统之间的适配。
也就是说Windows和Mac上使用Docker要么用系统自带的WSL虚拟话Linux系统,要么下载虚拟机(VMware)来构建Linux环境。总之都是基于Linux系统。

6.1.2 WSL技术

WSL (Windows Subsystem for Linux) 是一种由 Microsoft 开发的技术,它允许在 Windows 操作系统上运行 Linux 应用程序和命令行工具。WSL 提供了一个运行 Linux 内核的轻量级虚拟化环境,与 Windows 操作系统相互隔离,但可以与 Windows 文件系统进行交互。通过 WSL,用户可以在 Windows 上使用 Linux 应用程序和工具,从而无需在 Windows 和 Linux 之间切换操作系统。

WSL 有两个版本:WSL 1 和 WSL 2。WSL 1 使用的是一个轻量级的虚拟机,它可以在 Windows 和 Linux 之间共享文件系统和网络资源,但性能可能不如 WSL 2。WSL 2 使用的是完整的 Linux 内核,它可以提供更好的性能和兼容性,并且支持在 Linux 上运行 Docker 等容器技术。

WSL 可以通过在 Windows 上安装适当的 Linux 发行版来启用。目前,Microsoft 支持在 WSL 上安装 Ubuntu、Debian、Kali Linux、OpenSUSE 和 SLES 等常见的 Linux 发行版。

也就是在不使用VMware直接在Windows系统中布置Linux发行版子系统

6.1.3 Linux系统上功能的实现过程

应用程序调用库函数 -> 库函数调用调用内核指令 - >内核指令操作计算机硬件

6.1.4 打包内容
  1. 应用程序代码:这包括应用程序的源代码、可执行文件、配置文件等。
  2. 运行时环境:包括操作系统、语言运行时、库文件、依赖包等。这样,应用程序可以在容器中运行,而不受宿主操作系统和环境的影响。
  3. 应用程序依赖:例如数据库、消息队列、缓存等。这些依赖项可以与应用程序一起部署,并在容器内部运行,避免了在宿主操作系统上安装和配置这些依赖项的麻烦。
  4. 配置文件:Docker 会将应用程序的配置文件打包到容器中,以便在容器启动时加载和使用。这些配置文件包括应用程序的参数设置、环境变量、日志输出等。
  5. 其他资源:Docker 还可以打包其他应用程序所需的资源,例如静态文件、图片、视频等。这些资源可以与应用程序一起部署,并在容器内部使用。
6.1.5 Docker打包是否增加了项目体积

对于一般部署,确实增加了体积,但可以接受。

首先,Docker 可以将应用程序和依赖项打包到一个容器中,并在容器中运行。这样可以避免在宿主操作系统上安装和配置各种依赖项,减少了部署和管理的复杂性和难度。虽然容器的体积相对较大,但是它可以减少应用程序的部署和运行的时间,提高了效率和可靠性。

其次,Docker 提供了一致的开发环境和部署方案,使得应用程序在不同的环境中保持一致的行为和性能。这种可移植性和可重复性可以减少部署和管理的风险,同时也方便了应用程序的迁移和扩展。

最后,Docker 还可以使用镜像缓存和增量构建等技术来优化容器的体积和构建时间。镜像缓存可以避免重复下载和构建镜像,从而加快部署和构建的速度。增量构建可以利用先前构建的镜像进行增量更新,从而减少构建时间和镜像体积。

6.1.6 沙箱机制

**沙箱(Sandbox)**是一种安全机制,它可以将应用程序限制在一个封闭的环境中,从而防止应用程序访问系统资源或执行危险操作。

在计算机领域中,沙箱可以用于多种用途,例如:

  1. 应用程序隔离
  2. 恶意代码分析
  3. 软件开发和测试
  4. 虚拟化
6.1.7 Docker与虚拟机的区别
  1. 实现方式:Docker 利用 Linux 内核的命名空间和控制组技术,将应用程序和依赖项打包到一个容器中,并在容器中运行。而虚拟机通过虚拟化技术,在物理服务器上创建多个虚拟机,每个虚拟机都运行一个完整的操作系统和应用程序。
    Docker指涉及到项目用到的,虚拟机无论用与不用都将构建出完整操作系统。显得是分完备但又臃肿。

  2. 资源占用:Docker 容器和虚拟机相比,更加轻量级,占用的资源更少。Docker 容器共享宿主操作系统的内核和其他资源,而虚拟机需要为每个虚拟机分配独立的操作系统和资源。

  3. 启动时间:Docker 容器的启动时间比虚拟机更快,因为 Docker 只需要启动应用程序和依赖项,而不需要启动操作系统和其他环境。而虚拟机需要启动整个操作系统和虚拟化层,因此启动时间较长。

  4. 管理和部署:Docker 容器的管理和部署更加方便和灵活。Docker 可以通过镜像来进行容器的构建和管理,镜像可以在不同的环境中共享和重复使用。而虚拟机需要进行独立的操作系统安装和配置,管理和部署较为复杂。

  5. 安全性:虚拟机的安全性较高,因为每个虚拟机都运行独立的操作系统,相互之间隔离较好。而 Docker 容器共享宿主操作系统的内核和其他资源,容器之间隔离相对较弱,存在一定的安全风险。但是,Docker 通过沙箱和其他安全措施来加强容器的安全性,减少安全风险。

6.1.8 Docker中的网络

Docker中的网络是一种虚拟网络,用于在多个Docker容器之间提供通信和连接的机制。在Docker中,可以创建多个网络,每个网络可以包含多个容器。容器可以通过网络进行通信,就好像它们位于同一主机上一样。

Docker提供了几种不同类型的网络,包括:

  1. 桥接网络(Bridge network):这是Docker中默认的网络类型。它允许容器通过主机的网桥进行通信,并为每个容器分配唯一的IP地址。

  2. 主机网络(Host network):这种类型的网络允许容器与主机共享网络命名空间,这意味着它们使用主机的网络栈。这可以提供更好的性能,但容器之间的隔离性会降低。

  3. 覆盖网络(Overlay network):这种类型的网络允许在多个Docker主机之间创建虚拟网络,从而实现跨主机容器之间的通信。

  4. None网络:这种类型的网络表示容器没有网络接口,因此它们与其他容器和主机之间没有网络连通性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值