Docker知识点自查列表,今天的你学废了吗?
在多应用、多应用节点场景中,我们需要考虑几项挑战:
管理托管环境
这些不同的环境都需要软件和硬件管理。 必须确保每个环境中已安装的软件和已配置的硬件相同。 此外,还需要以一致且易于复制的方式配置每个环境的网络访问、数据存储和安全性等方面。
软件交付的连续性
将应用程序部署到环境的过程必须始终一致。 每个部署包都必须包含所有系统包、二进制文件、库、配置文件以及确保应用程序功能完备的其他项。 此外,还需要确保所有这些依赖项都与软件版本和体系结构相匹配。
高效使用硬件
每个已部署应用程序都必须通过与在同一硬件上运行的其他应用程序隔离的方式运行。 我们的目标是在每个服务器上运行多个应用程序以充分利用资源,并使这些应用程序不会相互影响。
应用程序可移植性
应用程序可移植性不可或缺,有多种原因。 托管环境可能出现故障,或者我们可能需要横向扩展应用程序。 在这两种情况下,可能都需要将软件重新部署到新环境。 我们想要将软件从一个主机移动到另一个主机,即使底层基础结构不同。 此类移动需要尽量快速地完成,以便为客户减少停机时间。
Docker的出现就是为了解决,从开发、到测试、到预发布、到生产,环境的配置的一致,一个应用包能够持续的交付
那么何时不适用Docker?>>安全性和虚拟化
容器是一种松散隔离的环境,可用于生成和运行软件包。 这些软件包包括在任何计算环境中快速可靠地运行应用程序所需的代码和所有依赖项。 我们将这些包称为容器映像。
容器映像是我们用于分发应用程序的单位
软件容器化是一种操作系统虚拟化方法,用于在不使用虚拟机 (VM) 的情况下部署和运行容器。 容器可以在物理硬件、云、VM 和多个操作系统上运行。
Docker 是一个用于开发、交付和运行容器的容器化平台。
Docker 不使用虚拟机监控程序,如果要开发和测试应用程序,可以在台式机或笔记本电脑上运行 Docker。 桌面版 Docker 支持 Linux、Windows 和 macOS。 对于生产系统,Docker 适用于服务器环境,包括 Linux 的多种变体和 Microsoft Windows Server 2016 及更高版本。 许多云(包括 Azure)都支持 Docker。
Docker 平台包含多个用于生成、运行和管理容器化应用程序的组件。
Docker 引擎包含配置为客户端-服务器实现的多个组件,其中,客户端和服务器在同一主机上同时运行。
客户端使用 REST API 与服务器通信,该 API 还让客户端能够与远程服务器实例通信。
Docker 客户端有两种替代选项:名为 docker 的命令行应用程序或名为 Docker Desktop 的基于图形用户界面 (GUI) 的应用程序。
CLI 和 Docker Desktop 均与 Docker 服务器交互。
来自 CLI 或 Docker Desktop 的 docker 命令使用 Docker REST API 将指令发送到本地或远程服务器,并作为用于管理容器的主要接口。
Docker 服务器是一个名为 dockerd 的守护程序。
dockerd 守护程序通过 Docker REST API 响应来自客户端的请求,并且可以与其他守护程序进行交互。
此外,Docker 服务器还负责跟踪容器的生命周期。
你将创建并配置多个对象以支持容器部署。 这些对象包括网络、存储卷、插件和其他服务对象。 我们不会在这里介绍所有这些对象,但请记住,我们可以根据需要创建和部署这些对象。
Docker Hub 是一个软件即服务 (SaaS) Docker 容器注册表。
Docker 注册表是用于存储和分发创建的容器映像的存储库。
Docker Hub 是 Docker 用于映像管理的默认公共注册表。
虽然 Docker Desktop 仅适用于 Windows 和 macOS,但它支持通过适用于 Linux 的 Windows 子系统 (WSL) 使用 Linux 命令行。
使用 docker build 命令重新生成容器映像。 生成映像后,无法更改该映像。 更改映像的唯一方法是创建新映像
容器映像是一种不可变的程序包,其中包含在容器中运行的所有应用程序代码、系统包、二进制文件、库、配置文件和操作系统。 在 Linux 上运行的 Docker 容器共享主机操作系统内核,只要二进制文件可以直接访问操作系统内核,便无需容器操作系统
docker run -d
docker restart
docker stop
docker pause
docker unpause
docker remove
docker ps -a
docker rm
docker cp
容器名称是唯一的,重复使用特定名称的唯一方法是删除之前的容器
容器可以使用两种选项来保持数据。
第一种选项是使用卷,第二种选项则是绑定装载
docker volume create
创建和管理新卷,卷是公认的用于容器的首选数据存储策略。
绑定装载在概念上与卷相同;但是,你可以在主机上装载任何文件或文件夹,而不是使用特定文件夹。与卷相比,绑定装载的功能有限,虽然性能更高,但仍依赖于具主机上的特定文件夹结构
Docker 为 Linux 和 Windows 提供不同的网络设置。
对于 Linux,有六个预配置的网络选项:
对于 Windows,有六个预配置的网络选项:
启动容器而未指定任何其他网络配置时,默认对容器应用桥接网络配置。NAT 是 Windows 上的默认网络,除非另行指定,否则所有容器都将连接到 NAT。
桥接网络中的每个容器都分配有一个 IP 地址和子网掩码,主机名默认为容器名称。 允许连接到默认桥接网络的容器按 IP 地址访问其他通过桥接网络连接的容器。 桥接网络不允许使用主机名在容器之间进行通信。
默认情况下,Docker 不会发布任何容器端口。 若要在容器端口和 Docker 主机端口之间启用端口映射,请使用 Docker 端口 --publish 标志。publish 标志可有效配置映射端口的防火墙规则。
通过主机网络,你可以直接在主机网络上运行容器。使用已知端口 80,而不是映射的端口。
使用桥接网络时,Docker0 网络接口在 macOS 上不可用;
Windows 和 macOS 桌面版均不支持使用主机网络配置。
“桥接”网络配置是容器使用的内部专用网络,它将容器网络与 Docker 主机网络隔离。 我们使用 publish 标志在容器和主机端口之间映射端口
与卷一样,绑定装载也存储在主机文件系统上的特定文件夹位置。 但是,绑定装载数据应由主机更新。 resolve.conf 内容应随主机更改,并由容器和主机使用