【Docker】WSL 2 上的 Docker 搭建和入门

▒ 目录 ▒

    • 🛫 导读
      • 开发环境
    • 1️⃣ 安装
      • 安装Docker Desktop for Windows
    • 2️⃣ 环境配置
    • 3️⃣ hello world
      • 第一次运行
      • 再次运行
      • 分析总结
    • 📖 参考资料

🛫 导读

开发环境

版本号描述
文章日期2023-12-14
操作系统Win11 - 22H222621.2715
WSL2
C:\Windows\System32>docker version
Client:Cloud integration: v1.0.35+desktop.5Version:           24.0.7API version:       1.43Go version:        go1.20.10Git commit:        afdd53bBuilt:             Thu Oct 26 09:08:44 2023OS/Arch:           windows/amd64Context:           defaultServer: Docker Desktop 4.26.0 (130397)Engine:Version:          24.0.7API version:      1.43 (minimum version 1.12)Go version:       go1.20.10Git commit:       311b9ffBuilt:            Thu Oct 26 09:08:02 2023OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.6.25GitCommit:        d8f198a4ed8892c764191ef7b3b06d8a2eeb5c7frunc:Version:          1.1.10GitCommit:        v1.1.10-0-g18a0cb0docker-init:Version:          0.19.0GitCommit:        de40ad0

1️⃣ 安装

首先安装WSL,可以参考文章《【WSL】Windows下的Linux子系统使用方法指南 https://blog.csdn.net/kinghzking/article/details/134984077》。
否则,启动Docker,会报下面的错误:
在这里插入图片描述

安装Docker Desktop for Windows

官网教程:https://docs.docker.com/desktop/install/windows-install/

  1. 双击 Docker Desktop Installer .exe 以运行安装程序。

  2. 出现提示时,请确保选择或不选择“配置”页上的“使用 WSL 2 而不是 Hyper-V”选项,具体取决于所选的后端。

    如果您的系统仅支持这两个选项之一,您将无法选择要使用的后端。

  3. 按照安装向导上的说明授权安装程序并继续安装。

  4. 安装成功后,选择**“关闭**”以完成安装过程。

  5. 如果管理员帐户与用户帐户不同,则必须将用户添加到 docker-users 组。

    • 管理员身份运行**“计算机管理”**,
    • 然后导航到 “本地用户和组” > “组”> docker-users
    • 单击鼠标右键将用户添加到组中。
    • 注销并重新登录以使更改生效。

2️⃣ 环境配置

  1. Docker Desktop安装后,从 Windows 开始菜单启动 Docker Desktop,然后从任务栏的隐藏图标菜单中选择 Docker 图标。 右键单击该图标以显示 Docker 命令菜单,然后选择“设置”。
    在这里插入图片描述
  1. 确保在“设置”>“常规”中选中“使用基于 WSL 2 的引擎”。
    在这里插入图片描述
  1. 通过转到“设置”>“资源”>“WSL 集成”,从要启用 Docker 集成的已安装 WSL 2 发行版中进行选择。
    并打开 WSL 发行版(小编只有一个选项 Ubuntu)
    在这里插入图片描述

3️⃣ hello world

关于Docker,可以找到很多教程,这里推荐《【狂神说Java】Docker最新超详细版教程通俗易懂 https://www.bilibili.com/video/BV1og4y1q7M4》,真的很细致,庖丁解牛。
本小节以hello-world为例,简单了解下什么是Docker。

第一次运行

在命令行中执行docker run hello-world,将显示下面的内容,其流程整理如下:

  1. 本地查找名为hello-world:latestimage(未找到)
  2. 服务器下载image,显示其信息。
  3. 执行Container(会创建一个Container)
  4. 打印了额外的说明信息
C:\Windows\System32>docker run hello-world
# 1. 本地查找名为`hello-world:latest`的`images`(未找到)
Unable to find image 'hello-world:latest' locally# 2. 服务器下载`image`,显示其信息。
latest: Pulling from library/hello-world
719385e32844: Pull complete
Digest: sha256:3155e04f30ad5e4629fac67d6789f8809d74fea22d4e9a82f757d28cee79e0c5
Status: Downloaded newer image for hello-world:latest# 3. 执行docker(会创建一个Container)
Hello from Docker!# 4. 打印了额外的说明信息
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 theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare 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/

再次运行

在命令行中再次执行docker run hello-world,将显示下面的内容,内容与第一次不一样了。
其流程也发生了变换,整理如下:

  1. 本地查找名为hello-world:latestimage(找到了)
  2. 拉取本地image,创建一个新的Container。
  3. 执行新的Container
  4. 打印了额外的说明信息
docker run hello-worldHello 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 theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare 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/

分析总结

  1. 两次执行只有一个image hello-world
    在这里插入图片描述
  1. 两次执行生成两个container,但是都使用的是同一个image hello-world,如下图:
    在这里插入图片描述

所以说,docker run 命令首先creates在指定映像上创建一个可写容器层,然后starts使用指定的命令。
如果想使用已经有的容器,执行docker start 容器Id或者 docker exec -it 容器Id /bin/bash命令。
效果如下:

C:\Windows\System32>docker start f8d2fef7a3f3e0e35319b5864dcf6ac1dc0e5b79a34dfa5d97c19de6adf2362b
f8d2fef7a3f3e0e35319b5864dcf6ac1dc0e5b79a34dfa5d97c19de6adf2362bC:\Windows\System32>docker exec -it f8d2fef7a3f3e0e35319b5864dcf6ac1dc0e5b79a34dfa5d97c19de6adf2362b  /bin/bash
Error response from daemon: Container f8d2fef7a3f3e0e35319b5864dcf6ac1dc0e5b79a34dfa5d97c19de6adf2362b is not runningC:\Windows\System32>docker logs -tf f8d2fef7a3f3e0e35319b5864dcf6ac1dc0e5b79a34dfa5d97c19de6adf2362b
2023-12-14T15:20:21.141914310Z
2023-12-14T15:20:21.142064937Z Hello from Docker!
2023-12-14T15:20:21.142072020Z This message shows that your installation appears to be working correctly.
2023-12-14T15:20:21.142077010Z
2023-12-14T15:20:21.142081638Z To generate this message, Docker took the following steps:
2023-12-14T15:20:21.142085977Z  1. The Docker client contacted the Docker daemon.

附一张docker run流程图:
在这里插入图片描述

📖 参考资料

  • 【WSL】Windows下的Linux子系统使用方法指南 https://blog.csdn.net/kinghzking/article/details/134984077
  • WSL 2 上的 Docker 远程容器入门 https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-containers
  • 【狂神说Java】Docker最新超详细版教程通俗易懂 https://www.bilibili.com/video/BV1og4y1q7M4
  • Windows系统 WSL安装 CentOS7 和docker https://www.jianshu.com/p/ed0d23e742d0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/223174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【NTN 卫星通信】Starlink,卫星互联网的技术革命(一)

1. 什么是Starlink Starlink是由Elon Musk创立的私人太空探索公司SpaceX提供的卫星互联网服务。它旨在为世界上传统互联网服务速度慢或不可用的偏远地区提供价格合理的高速互联网。 为什么Starlink很重要?   Starlink之所以重要,是因为它有可能为数百万…

C++入门【8-C++ 运算符】

C 运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符 本章将逐一介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋…

第一次使用ThreadPoolExecutor遇到的问题

最近遇到个问题,因为业务需求将表中的五个字段改成了CLOB,结果出现了sql异常,修改方式就是将这五个字段单独拿出来查询,结果导致了查询慢的问题,由于sql年代久远,涉及十几张表的关联,加减乘除&a…

管理类联考——逻辑——真题篇——按知识分类——论证逻辑

文章目录 2023真题(2023-27)-论证逻辑-削弱-措施目的型-缩写:zl吃lj→cclj,jjhb真题(2023-28)-论证逻辑-假设-搭桥-缩写:学校专业化服务→学生创业→创业者收益榜名列榜首;培养创新新型人才与创新创业培训的桥梁真题(2023-30)-论证逻辑-结构相似题-缩写:A不一定B,C…

逆向获取某音乐软件的加密(js逆向)

本文仅用于技术交流,不得以危害或者是侵犯他人利益为目的使用文中介绍的代码模块,若有侵权请联系作者更改。 老套路,打开开发者工具,直接开始找到需要的数据位置,然后观察参数,请求头,cookie是…

【ET8框架入门】1.运行指南

主要学习网址 论坛地址为:https://et-framework.cn Git地址为:GitHub - egametang/ET: Unity3D Client And C# Server Framework 官方QQ群 : 474643097 多线程多进程框架设计-01预告_哔哩哔哩_bilibili 项目检出 检出项目切换到release8.0分支 Git…

零信任 SASE 办公安全解决方案:提升企业网络安全与灵活性

​零信任 SASE(Secure Access Service Edge)办公安全解决方案为企业带来了许多好处,相较于以前的解决方案有明显差异。这个方案的出现是为了应对企业面临的新的网络安全挑战和远程办公的需求。 1、统一的网络安全管理:SASE 将网络…

Java版商城:Spring Cloud+SpringBoot b2b2c实现多商家入驻、直播带货及免 费小程序商城搭建

1. 涉及平台 平台管理、商家端(pc端、手机端)、买家平台(h5/公众号、小程序、app端(ios/android)、微服务平台(业务服务) 2. 核心架构 spring cloud、spring boot、mybatis、redis 3. 前端框架…

Unity:Camera讲解之ClearFlags

Clear Flags四个选项讲解: 前三个都是常用的,第四个基本不会用。 skybox(天空盒): 主要是一种用于渲染游戏场景中天空的技术。它是一个包含6个纹理图片的立方体贴图,分别代表了从不同角度观察天空时所看到的前、后、上、下、左…

spring Aop之切点表达式

切点表达式用来定义通知(Advice)往哪些方法上切入。 切入点表达式语法格式: execution([访问控制权限修饰符] 返回值类型 [全限定类名]方法名(形式参数列表) [异常]) 访问控制权限修饰符: ● 可选项。斜体样式 ● 没写&#xff…

产品经理之如何编写可行性分析(医疗HIS项目详细案例模板)

目录 一.是什么? 二.目的 三.准备 四.文档的基本框架 项目的开展 产品的开展 项目人员安排及项目总成本费用估算 不确定性分析 可行性研究结论与建议 五.案例模板 前言 继上篇的竞品分析报告,本篇将继续分析可行性报告的书写,接下来也会继续分析需求文档,小伙伴们可…

DevEco Studio 项目鸿蒙(HarmonyOS)资源引用(自定统和系统)

DevEco Studio 项目鸿蒙(HarmonyOS)资源引用(自定统和系统) 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、资源访问 HarmonyOS应用资源分为两类,一类是应用资源&…

C# WPF上位机开发(键盘绘图控制)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 在软件开发中,如果存在canvas图像的话,一般有几种控制方法。一种是鼠标控制;一种是键盘控制;还有一…

.NET 8的正式发布,对Telerik开发工具意味着什么?

微软日前正式发布了.NET 8稳定版,这是一个长期支持(LTS)的版本,它可以使Android、Windows和macOS跨平台应用的开发过程高效流畅,同样的目标也驱使着Telerik UI不断进步和发展! Telerik DevCraft包含一个完整的产品栈来构建您下一个…

力扣二叉树--总结篇(2)

前言 总体回顾:11.18-12.14,中间有一个星期左右因为考试没有写题。37道题。 内容 这是第二阶段刷的题 从路径到构造二叉树,合并二叉树,再到二叉搜索树,公共祖先问题 看到二叉树,看到递归 都会想&#…

Navicat16 无限试用 亲测有效

Navicat16 无限试用 亲测有效 亲测有效!!! 吐槽下,有的用不了,有的是图片,更甚者还有收费的,6的一批 粘贴下面的代码,保存到桌面,命名为 trial-navicat16.bat echo off…

移动滑轨屏的运用是否对传统展览展示效果产生了哪些影响?

移动滑轨屏因其独特的展示外观和形式,也常被人们称为滑轨电视、电动滑轨,主要由滑动轨道、显示屏、感应装置、控制系统等组件结合实现,是一种解决了传统展览内容展示局限的多功能互动装置,能够呈现动态内容并与用户产生互动交流&a…

数据结构-栈

介绍 栈(Stack)是一种非常基础和常用的数据结构,它是一个只能在一端进行插入(称为“入栈”或“压栈”,通常记作 push 操作)和删除(称为“出栈”或“弹栈”,通常记作 pop 操作&#…

HandlerMethodArgumentResolver用于统一获取当前登录用户

这里记录回顾一些知识,不然就快忘记啦。 环境:SpringBoot 2.0.4.RELEASE需求:很多Controller方法,刚进来要先获取当前登录用户的信息,以便做后续的用户相关操作。准备工作:前端每次请求都传token&#xff0…

Leetcode—230.二叉搜索树中第K小的元素【中等】

2023每日刷题(六十) Leetcode—230.二叉搜索树中第K小的元素 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nul…