首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Docker(翻译)

Docker(翻译)

作者头像
麦克马
修改2025-05-06 16:27:09
修改2025-05-06 16:27:09
2250
举报

框架(Docker architecture)

Docker 使用 C/S 框架。客户端负责与 Docker 守护进程(Daemon) 进行对话,而守护进程负责繁重的构建、运行、分发 Docker 容器的工作。Docker 客户端和守护进程可以在同一操作系统中运行,或者通过客户端与远程的 Docker 守护进程进行连接。Docker 客户端和守护进程之间通过使用 REST 接口,基于 UNIX socket 或网络接口进行通信。另外还有一个 Docker 客户端叫作 Docker Compose,让你可以同时管理多个容器。

守护进程(Docker daemon)

守护进程(dockerd)负责监听 Docker 接口请求,并管理 Docker 对象,如镜像、容器、网络和卷。一个守护进程可以同时与其它多个守护进程通信来管理 Docker 服务。

客户端(Docker client)

客户端(docker)是用户与 Docker 通信的主要方式。当你使用命令如 docker run 时,客户端会将该命令发送给守护进程(dockerd)来执行。客户端(docker)命令调用 Docker 底层接口。客户端可以与多个守护进程通信。

桌面版 Docker(Docker desktop)

Docker 桌面版是一款易安装环境,适用于 Mac、Windows,或Linux ,让你能够构建并共享容器化的应用和微服务。桌面版 Docker 包含 Docker 守护进程(dockerd),Docker 客户端(docker),Docker Compose,Docker 内容信赖(Docker Content Trust),k8s(Kubernetes) 和 凭据助手(Docker Helper)。更多信息请参考 Docker Desktop

注册表(Docker registries)

注册表用来存储 Docker 镜像。Docker Hub 是一个公共的注册表,任何人都可以使用,Docker 默认会从 Docker Hub 查找镜像。当然你也可以实现自己的注册表。

当你使用 docker pull 或 docker run 命令时,Docker 会从你配置的注册表拉取镜像。

当你使用 docker push 命令时,Docker 会将你的镜像推送至你配置的注册表。

Docker 对象(Docker objects)

当你使用 Docker时,你需要创建和使用镜像,容器,网络,卷,插件以及其它对象。这一节简单介绍这些对象的概念。

镜像(Images)

镜像是一个包含创建容器指令的只读模板。通常,一个镜像会包含另一个镜像来实现一些额外的定制。比如,你创建一个镜像可能是基于 ubuntu 操作系统,但要安装相应的 web 服务器和应用,以及能够让人的应用运行起来的具体配置。

你可以使用你自己创建的镜像或使用其他人创建并发布到注册表的镜像。要构建你自己的镜像,你需要创建 Dockerfile,Dockerfile 包含简单的语法,用以定义创建镜像和运行它的步骤。Dockerfile 中的每一条指令代表镜像中的一层(layer)。当你创建 Dockerfile 并重新构建镜像时,只有那些修改过的层会被重构。这是使得镜像与其他虚拟技术相比更经量,更高效的地方。

容器(Container)

容器是镜像的可运行实例。你可以使用 Docker 接口(API)或命令行客户端(CLI)来创建,启动,停止,移动或删除一个容器。你可以将一个容器与其它一个或多个网络进行连接,挂载存储,甚至基于当前状态创建一个新的镜像。

默认情况下,一个容器能够与其它容器及其宿主机器很好的隔离。你可以在网络,存储或其它底层系统级别上控制如何与其它容器或宿主机器隔离。

容器在你创建或运行它时即已被其镜像,包括镜像中提供的配置项所定义。当一个容器被移除后,对于其任意未被持久化的修改将会消失。

docker run 命令

如下命令中,运行了一个 ubuntu 的容器,同时附带执行你本地命令的会话运行 /bin/bash。

代码语言:shell
复制
docker run -i -t ubuntu /bin/bash

当执行上述命令时,会发生以下情况(假设你正在使用默认的注册表配置):

  • 如果你本地没有 ubuntu 镜像,Docker 会从你配置的注册表中拉取,就像你通过 docker pull 手动拉取 ubuntu 一样;
  • Docker 会创建一个容器,跟你手动执行 docker container create 命令一样;
  • Docker 会分配一个可读写文件系统作为容器的最终层。允许容器通过它本地文件系统来创建或修改文件及目录;
  • 如果你未指定网络选项,Docker 会通过默认网络创建一个网络接口连接容器。包括分配 IP 地址给容器。默认情况下,容器使用宿主机的网络与外网进行网络通信。
  • 之后 Docker 启动容器用运行 /bin/bash。因为容器以交互式运行并连接到你的终端(通过 -i 和 -t 参数),你通过键盘进行输入的同时,Docker 会将输出记录到你的终端。
  • 当你通过终端命令执行 exit时,容器会停止,但不会移除。你可以重新运行容器或删除它。

底层技术(Underlying technology)

Docker 使用 Go 语言编写,利用 Linux 内核的一些特性来实现其功能。Docker 使用所谓的命名空间(namespace)来实现工作空间,即容器的隔离。当你运行一个容器,Docker 会为其创建一组命名空间。

命名空间提供了隔离层。容器的各个方面都单独运行于某个命名空间,且其访问也仅限于该命名空间。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 框架(Docker architecture)
  • 守护进程(Docker daemon)
  • 客户端(Docker client)
  • 桌面版 Docker(Docker desktop)
  • 注册表(Docker registries)
  • Docker 对象(Docker objects)
    • 镜像(Images)
    • 容器(Container)
    • 底层技术(Underlying technology)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档