docker 入门1 - 方向 【翻译】
开始,第 1 部分:方向和设置
欢迎!我们很高兴您想学习 Docker。Docker 入门教程将教您如何:
- 设置 Docker 环境(当前步骤)
- 生成映像并将其作为一个容器运行
- 缩放应用以运行多个容器
- 在群集中分发应用
- 通过添加后端数据库来堆栈服务
- 将应用部署到生产
Docker 概念
Docker 是开发人员和系统管理员使用容器开发、部署和运行应用程序的平台。使用 Linux 容器来部署应用程序称为容器化(containerization)。容器并不是新概念,但通过容器轻松部署应用程序则是最近才实现的。
容器化正在变得越来越流行,因为容器有以下特点:
-
Flexible 灵活性:即使是最复杂的应用也可以放入容器。
-
Lightweight 轻量性:容器利用并共享主机内核。
-
Interchangeable 通用性:可以即时部署更新和升级。
-
Portable 便携性:可以构建本地应用,部署到云端,并在任何地方运行。
-
Scalable 可扩展:可以增加和自动分发容器副本。
-
Stackable 可堆叠:可以即时纵向堆叠服务。
镜像和容器
通过运行镜像启动容器。镜像是一个可执行包,它包括运行应用程序所需的一切内容 -- 代码、运行时、库、环境变量和配置文件。
容器是镜像的运行时实例,执行时镜像在内存中变为什么(即具有状态的镜像或用户进程)。您可以看到运行容器的列表,该列表包含命令 docker ps
,就像 Linux 中一样。
容器和虚拟机
容器在 Linux 上本机运行,并与其他容器共享主机的内核。它运行一个离散进程,不会占用比任何其他可执行文件更多的内存,因此它很轻量。
相比之下,虚拟机 (VM) 运行一个成熟的"来宾"操作系统,通过虚拟机管理程序虚拟访问主机资源。通常,VM 提供的环境比大多数应用程序需要的资源更多。
准备 Docker 环境
在受支持的平台上安装维护的 Docker 社区版 (CE) 或企业版 (EE)。
对于完整的Kubernetes集成
- Docker 桌面上的 Kubernetes 适用于 Mac,提供 17.12 Edge (mac45) 或 17.12 Stable (mac46) 及更高版本。
- 适用于 Windows 的 Docker 桌面上的 Kubernetes 在 18.06.0 CE (win70) 和更高版本以及Edge通道中可用。
测试 Docker 版本
-
运行
docker --version
,并确保您具有支持的 Docker 版本:docker --version Docker version 17.12.0-ce, build c97c6d6
-
运行
Docker info
(或docker version
不带 --),查看有关 Docker 安装的更多详细信息:docker info Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 17.12.0-ce Storage Driver: overlay2 ...
为了避免权限错误(和使用 sudo
),请将用户添加到 docker
组。
测试 Docker 安装
-
通过运行简单的 Docker 镜像 hello-world 来测试您的安装是否正常工作:
docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world ca4f61b1923c: Pull complete Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ...
-
列出下载到您的计算机的 hello - world 镜像:
docker image ls
-
列出容器 hello-world(由对应镜像产生),它在显示信息后立刻退出了。如果容器仍在运行中,就不需要 --all 参数了:
docker container ls --all CONTAINER ID IMAGE COMMAND CREATED STATUS 54f4984ed6a8 hello-world "/hello" 20 seconds ago Exited (0) 19 seconds ago
概括和备忘单
## List Docker CLI commands docker docker container --help ## Display Docker version and info docker --version docker version docker info ## Execute Docker image docker run hello-world ## List Docker images docker image ls ## List Docker containers (running, all, all in quiet mode) docker container ls docker container ls --all docker container ls -aq
第一部分的结论
容器化使得持续集成和持续部署(CI/CD)得以无缝实现。例如:
-
应用程序不再对系统有依赖。
-
更新可以推送到分布式应用程序的任何部分。
-
资源密度可以被优化。
使用 Docker,扩展应用程序就是启动新的可执行文件,不运行繁重的虚拟机。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义