- docker 通俗认识
- 关键名词
- ref
- 概述
- Docker用处
- Docker架构
- Docker官方名词解释
- Docker deamon
- Docker client
- Docker Desktop
- Docker registries
- Docker objects
- Images
- Containers
- The underlying technology
csdn docker卸载与安装
判断是否安装成功:
sudo docker run hello-world
预期结果:
Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
分析:
大致步骤:
To generate this message, Docker took the following steps:
- The Docker client contacted the Docker daemon.
- The Docker daemon pulled the “hello-world” image from the Docker Hub.(amd64)
- The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
- The Docker daemon streamed that output to the Docker client, which sent it to your terminal.
Docker client: docker客户端
Docker daemon: docker守护进程
“xxx” image:“xxx”镜像
Docker Hub:Docker中心
container:容器
terminal:终端
**整体认识:**最终我们创建的环境(拿来使用的),是容器。容器是完整流程的最终产物,而容器是镜像的实例化。镜像来自docker中心,但是只有docker守护进程可以去docker中心。所以docker守护进程要拿到image并创建一个容器。
那么,docker守护进程就是打工人,docker中心就是我家仓库(工厂),docker客户端就是通信员,而我,大boss!
大致流程:
我们需要一个container去跑我们的项目;
就用terminal控制docker client;
docker client就会去找docker daemon;
docker daemon去docker hub拿需要的image;
拿到image后,照着image(是一个仅可读的file),docker deamon创建一个container;(就像windows镜像和安装后能用的windows系统一样)
【以上是自己的想法】
refDocker 官方:
Docker overview【官方overview,通俗易懂】
Docker get-started
ref:
概述Docker overview
Docker用处创建docker虚拟环境(容器),隔离主机环境;
轻量级,高度可移植;
便于快速交付、测试和部署代码;
动态管理工作负载、根据业务需求近乎实时地扩展或拆除应用程序和服务
Docker架构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zLUiql0h-1650956846735)(images/architecture.svg)]
CS架构:C是docker客户端,S是docker守护进程。
Docker 客户端和守护程序可以在同一系统上运行,或者 Docker 客户端远程 连接到Docker 守护程序。Docker 客户端和守护程序使用 REST API,通过 UNIX 套接字或网络接口进行通信。
Docker客户端与 Docker守护进程对话;
Docker守护进程负责构建、运行和分发 Docker 容器的繁重工作;
另一个 Docker 客户端是 Docker Compose,它允许您使用由一组容器组成的应用程序。
Docker官方名词解释 Docker deamon守护进程
dockerd
Docker 守护程序 ( dockerd) 侦听 Docker API 请求并管理 Docker 对象,例如镜像、容器、网络和卷(volumes)。守护进程还可以与其他守护进程通信以管理 Docker 服务。
Docker client客户端
docker
Docker 客户端 ( docker) 是许多 Docker 用户与 Docker 交互的主要方式。当您使用诸如docker run之类的命令时,客户端会将这些命令发送到dockerd执行它们。该docker命令使用 Docker API。Docker 客户端可以与多个守护进程通信。
Docker Desktop桌面
Docker Desktop 是一个易于安装的应用程序,适用于您的 Mac 或 Windows 环境,使您能够构建和共享容器化应用程序和微服务。Docker Desktop 包括 Docker 守护程序 ( dockerd)、Docker 客户端 ( docker)、Docker Compose、Docker Content Trust、Kubernetes 和 Credential Helper。有关更多信息,请参阅Docker 桌面。
Docker registries注册表
Docker 注册表 存储 Docker 镜像。Docker Hub 是一个任何人都可以使用的公共注册表,并且 Docker 默认配置为在 Docker Hub 上查找镜像。您甚至可以运行自己的私有注册表。
当您使用docker pullordocker run命令时,将从您配置的注册表中提取所需的镜像。当您使用该docker push命令时,您的镜像会被推送到您配置的注册表中。
Docker objects对象
当您使用 Docker 时,您正在创建和使用镜像、容器、网络、卷、插件和其他对象。本节简要概述了其中一些对象。
Images镜像
镜像是一个只读模板,其中包含创建 Docker 容器的说明。通常,一个镜像基于另一个镜像,并带有一些额外的自定义。例如,您可以基于该镜像构建一个镜像ubuntu ,但安装 Apache Web 服务器和您的应用程序,以及使您的应用程序运行所需的配置详细信息。
您可以创建自己的镜像,也可以只使用其他人创建并在注册表中发布的镜像。要构建您自己的镜像,您需要使用简单的语法创建一个Dockerfile ,用于定义创建和运行镜像所需的步骤。Dockerfile 中的每条指令都会在镜像中创建一个层。当您更改 Dockerfile 并重建镜像时,仅重建那些已更改的层。与其他虚拟化技术相比,这是使镜像如此轻量、小巧和快速的部分原因。
Containers容器
**容器是镜像的可运行实例。**您可以使用 Docker API 或 CLI 创建、启动、停止、移动或删除容器。您可以将容器连接到一个或多个网络,将存储附加到它,甚至可以根据其当前状态创建新镜像。
默认情况下,一个容器与其他容器及其主机的隔离相对较好。您可以控制容器的网络、存储或其他底层子系统与其他容器或主机的隔离程度。
容器由其镜像以及您在创建或启动它时提供给它的任何配置选项定义。当容器被移除时,任何未存储在持久存储中的[stored in persistent storage]状态更改都会消失。
The underlying technology底层技术
Docker 是用 Go 编程语言编写的,并利用 Linux 内核的几个特性来提供其功能。 Docker 使用一种称为命名空间的技术来提供称为容器的隔离工作区。 当您运行容器时,Docker 会为该容器创建一组命名空间(namespace)。
这些命名空间提供了一层隔离。 容器的每个方面都在单独的命名空间中运行,并且它的访问权限仅限于该命名空间。



