”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Windows 上的 Docker:带您进入容器仙境

Windows 上的 Docker:带您进入容器仙境

发布于2024-11-07
浏览:740

这一切都始于一个简单的好奇心。我发现了这个用 Next.js 制作的很酷的开源项目——我很高兴能够探索它。但是,隐藏在项目文件中......神秘的 docker-compose.yml 文件。

Docker on Windows: Led Into Container Wonderland

经过快速的谷歌搜索,我了解到这不仅仅是一些随机文件放在那里用于装饰。不,不,这是必要的!为了运行这个项目,我需要 Docker,这个神奇的工具似乎每个人都知道,但从未用简单的术语解释过。

所以,我的旅程开始了——在 Windows 上安装 Docker,一路上克服了一些挑战,最终了解到 Docker 就像将您的应用程序打包到一个集装箱中,准备好在任何平台上顺利航行。 ?但首先,我必须弄清楚如何实际安装这个东西……事情是这样的。 ?

任务 1:安装 wsl

那么,我的 Docker 之旅的第一站是什么呢? WSL — 又名 Linux 的 Windows 子系统。如果您不熟悉 WSL,请将其视为暗门,可让您在 Windows 计算机内运行完整的 Linux 环境。

我很快了解到 Docker 在 Linux 上运行得非常好,因此安装 WSL 是我让 Docker 在 Windows 上顺利启动和运行的门票。我选择的工具?强大的PowerShell! ?️ 通过一个简单的命令,我召唤了WSL:

wsl --install

如果一切顺利,Windows 将发挥其魔力并安装默认的 Linux 发行版,即 Ubuntu! ?

现在,事情变得有趣了。 Ubuntu 第一次启动时,会要求输入用户名和密码。灵机一动(或懒惰),我决定让事情变得简单:用户名和密码都是“ubuntu”。

过了一会儿,我发现自己进入了 Ubuntu 命令行。但由于我们才刚刚开始,下一步就是优雅地退出。为此,我输入:

exit

…就这样,Linux 命令行窗口关闭了。

现在,如果您喜欢冒险并想尝试 Ubuntu 以外的东西,请不要担心 - WSL 为您提供选择!您可以使用以下命令列出所有可用的发行版:

wsl -l -o

并通过运行切换到另一个:

wsl --install -d 

但是现在,我们将坚持使用 Ubuntu(我的意思是,我已经承诺了用户名和密码,对吧??)。

在继续之前,让我们确保使用正确的 WSL 版本。您可以使用以下命令检查您安装的版本:

wsl -l -v

如果您有 WSL 2,那就太棒了!它更快、更强大,总体来说是 Docker 的更好选择。让我们通过运行将其设置为默认值:

wsl --set-default-version 2

就这样,安装 Docker 的第一个要求就完成了!我们距离容器化的辉煌又近了一步?.

任务2:下载docker

WSL 设置并准备就绪后,是时候解决下一个重大任务了:安装 Docker 本身。 ?但在开始下载之前,我必须确保我值得信赖的设备能够应对挑战。毕竟,Docker 不仅仅可以在任何旧机器上运行,它有一些您需要满足的要求。

1️⃣检查系统要求

首先,我访问了 Docker 官方网站来获取安装程序。但在点击下载按钮之前,我仔细检查了我的设备是否满足 Docker 的系统要求。

Docker on Windows: Led Into Container Wonderland

这些要求包括足够的内存、磁盘空间,而且重要的是 Windows 版本为 1900 或更高版本。您可以通过运行 dxdiag 命令来检查您的 Windows 版本,该命令将向您显示有关系统的所有有趣的详细信息。

Docker on Windows: Led Into Container Wonderland

2️⃣虚拟化——必须的!

接下来,我确保我的计算机上启用了虚拟化。 Docker依靠虚拟化来创建容器,因此这一步至关重要。您可以通过打开任务管理器并在“性能”选项卡下查找虚拟化状态来检查它是否已启用。

Docker on Windows: Led Into Container Wonderland

如果已启用,那么您就可以开始了!如果没有……那么,是时候访问您的 BIOS 设置并将其打开,检查一下

3️⃣启用Windows功能

在安装 Docker 之前,需要激活几个重要的 Windows 功能:适用于 Linux 的 Windows 子系统和虚拟机平台。这些都是Docker顺利运行所必需的。

Docker on Windows: Led Into Container Wonderland

激活它们的方法如下:

  • 打开运行系统并输入“windows featuree”
  • 滚动列表并选中以下复选框:
    • Linux 的 Windows 子系统
    • 虚拟机平台
  • 单击“确定”,让 Windows 完成它的工作。您可能需要重新启动计算机才能应用这些更改。

启用这些功能后,您就可以继续进行 Docker 安装了。 ?

4️⃣下载并安装Docker

现在我的系统已完全准备就绪,我继续从官方网站下载 Docker 安装程序。安装过程非常顺利——只需点击几下,Docker 就在我的电脑上启动并运行了。 ?

5️⃣启动 Docker

成功安装 Docker 后,我启动了 Docker Desktop,就这样,我的系统就准备好开始像专业人士一样启动容器了。 ?

就这样——第二个任务完成了! Docker 现已安装,接下来我将引导您设置第一个 Docker 容器并在其中运行 Next.js 项目。

最终任务:启动 Docker

Docker 安装完毕并准备就绪后,就到了最后的任务了:测试安装。我正要第一次涉足集装箱水域,幸运的是,Docker 提供了一艘方便的小救生艇——一个名为 docker/welcome-to-docker 的示例项目。 ️

第 1 步:启动 Docker Desktop
首先,我从“开始”菜单启动了 Docker Desktop。您会注意到 Docker 开始在后台运行,静静地准备发挥其容器魔法。

第 2 步:访问 CLI
现在,是时候亲自动手执行一些命令行界面 (CLI) 操作了。由于 Docker 在 Linux 发行版上工作得最好,所以我需要确保我在正确的环境中运行。就我而言,这意味着切换到 Ubuntu(记住我们刚刚退出☺️)。

要切换到 Ubuntu,我打开 CLI 并输入:

ubuntu

这让我进入了 Ubuntu 环境,Docker 命令就在其中。 ??

第 3 步:运行 Docker 欢迎项目
环境设置完毕后,是时候使用 Docker 的欢迎项目来启动我的第一个 Docker 容器了。这是我使用的命令:

docker run -d -p 80:80 docker/welcome-to-docker

(注意:-d 标志以分离模式运行容器,这意味着它在后台运行,而 -p 80:80 部分将容器的端口 80 映射到我机器的端口 80。翻译:容器现在可以通过我的网络浏览器访问。)

Docker on Windows: Led Into Container Wonderland
运行此命令后,Docker 在后台启动了欢迎容器,我可以在浏览器中访问 http://localhost 来查看“欢迎使用 Docker”消息。成功! ?

第 4 步:停止容器
一旦我领略了第一个运行容器的所有荣耀,就到了关闭它的时候了。为此,我需要容器的 ID。我通过运行找到了它:

docker ps -a

这列出了所有正在运行的容器,我从那里获取了容器 ID。有了ID在手,我发出了命令:

docker stop [container_id]

就这样,我的容器被停下来,安静地休息,直到再次需要。 ?

现在您已经知道了——Docker 现已安装在 Windows 上。如果您发现这篇博文有帮助,请随时与可能从中受益的其他人分享。嘿,为什么不点击关注按钮来了解有关 JavaScript、React 和所有 Web 开发的更多书呆子知识呢?

让我们在 Instagram、Twitter 和 GitHub 上保持联系——真正的魔法发生的地方。

感谢您的坚持! ?
Docker on Windows: Led Into Container Wonderland

参考

  • 在windows中安装linux

  • Windows 中的 Docker by docker doc

版本声明 本文转载于:https://dev.to/brokarim/docker-on-windows-led-into-container-wonderland-3ppd?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何干净地删除匿名JavaScript事件处理程序?
    如何干净地删除匿名JavaScript事件处理程序?
    删除匿名事件侦听器将匿名事件侦听器添加到元素中会提供灵活性和简单性,但是当要删除它们时,可以构成挑战,而无需替换元素本身就可以替换一个问题。 element? element.addeventlistener(event,function(){/在这里工作/},false); 要解决此问题,请考虑...
    编程 发布于2025-04-05
  • 在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在JTable中维护jtable单元格渲染后,在JTable中,在JTable中实现自定义单元格渲染和编辑功能可以增强用户体验。但是,至关重要的是要确保即使在编辑操作后也保留所需的格式。在设置用于格式化“价格”列的“价格”列,用户遇到的数字格式丢失的“价格”列的“价格”之后,问题在设置自定义单元格...
    编程 发布于2025-04-05
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    在java 中有效地替换多个substring,需要在需要替换一个字符串中的多个substring的情况下,很容易求助于重复应用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    编程 发布于2025-04-05
  • 版本5.6.5之前,使用current_timestamp与时间戳列的current_timestamp与时间戳列有什么限制?
    版本5.6.5之前,使用current_timestamp与时间戳列的current_timestamp与时间戳列有什么限制?
    在时间戳列上使用current_timestamp或MySQL版本中的current_timestamp或在5.6.5 此限制源于遗留实现的关注,这些限制需要对当前的_timestamp功能进行特定的实现。 创建表`foo`( `Productid` int(10)unsigned not n...
    编程 发布于2025-04-05
  • 如何在php中使用卷发发送原始帖子请求?
    如何在php中使用卷发发送原始帖子请求?
    如何使用php 创建请求来发送原始帖子请求,开始使用curl_init()开始初始化curl session。然后,配置以下选项: curlopt_url:请求 [要发送的原始数据指定内容类型,为原始的帖子请求指定身体的内容类型很重要。在这种情况下,它是文本/平原。要执行此操作,请使用包含以下标头...
    编程 发布于2025-04-05
  • 如何使用“ JSON”软件包解析JSON阵列?
    如何使用“ JSON”软件包解析JSON阵列?
    parsing JSON与JSON软件包 QUALDALS:考虑以下go代码:字符串 } func main(){ datajson:=`[“ 1”,“ 2”,“ 3”]`` arr:= jsontype {} 摘要:= = json.unmarshal([] byte(...
    编程 发布于2025-04-05
  • 如何有效地选择熊猫数据框中的列?
    如何有效地选择熊猫数据框中的列?
    在处理数据操作任务时,在Pandas DataFrames 中选择列时,选择特定列的必要条件是必要的。在Pandas中,选择列的各种选项。选项1:使用列名 如果已知列索引,请使用ILOC函数选择它们。请注意,python索引基于零。 df1 = df.iloc [:,0:2]#使用索引0和1 的 ...
    编程 发布于2025-04-05
  • 如何使用Python理解有效地创建字典?
    如何使用Python理解有效地创建字典?
    在python中,词典综合提供了一种生成新词典的简洁方法。尽管它们与列表综合相似,但存在一些显着差异。与问题所暗示的不同,您无法为钥匙创建字典理解。您必须明确指定键和值。 For example:d = {n: n**2 for n in range(5)}This creates a dicti...
    编程 发布于2025-04-05
  • \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    答案: 在大多数现代编译器中,while(1)和(1)和(;;)之间没有性能差异。编译器: perl: 1 输入 - > 2 2 NextState(Main 2 -E:1)V-> 3 9 Leaveloop VK/2-> A 3 toterloop(next-> 8 last-> 9 ...
    编程 发布于2025-04-05
  • 如何简化PHP中的JSON解析以获取多维阵列?
    如何简化PHP中的JSON解析以获取多维阵列?
    php 试图在PHP中解析JSON数据的JSON可能具有挑战性,尤其是在处理多维数组时。 To simplify the process, it's recommended to parse the JSON as an array rather than an object.To do...
    编程 发布于2025-04-05
  • 如何使用组在MySQL中旋转数据?
    如何使用组在MySQL中旋转数据?
    在关系数据库中使用mySQL组使用mySQL组进行查询结果,在关系数据库中使用MySQL组,转移数据的数据是指重新排列的行和列的重排以增强数据可视化。在这里,我们面对一个共同的挑战:使用组的组将数据从基于行的基于列的转换为基于列。 Let's consider the following ...
    编程 发布于2025-04-05
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    编程 发布于2025-04-05
  • 如何从PHP中的数组中提取随机元素?
    如何从PHP中的数组中提取随机元素?
    从阵列中的随机选择,可以轻松从数组中获取随机项目。考虑以下数组:; 从此数组中检索一个随机项目,利用array_rand( array_rand()函数从数组返回一个随机键。通过将$项目数组索引使用此键,我们可以从数组中访问一个随机元素。这种方法为选择随机项目提供了一种直接且可靠的方法。
    编程 发布于2025-04-05
  • 如何将PANDAS DataFrame列转换为DateTime格式并按日期过滤?
    如何将PANDAS DataFrame列转换为DateTime格式并按日期过滤?
    将pandas dataframe列转换为dateTime格式示例:使用column(mycol)包含以下格式的以下dataframe,以自定义格式:})指定的格式参数匹配给定的字符串格式。转换后,MyCol列现在将包含DateTime对象。 date date filtering > = p...
    编程 发布于2025-04-05
  • 大批
    大批
    [2 数组是对象,因此它们在JS中也具有方法。 切片(开始):在新数组中提取部分数组,而无需突变原始数组。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    编程 发布于2025-04-05

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3