【Docker】WSL 2 上的 Docker 搭建和入门
▒ 目录 ▒
- 🛫 导读
- 开发环境
- 1️⃣ 安装
- 安装Docker Desktop for Windows
- 2️⃣ 环境配置
- 3️⃣ hello world
- 第一次运行
- 再次运行
- 分析总结
- 📖 参考资料
🛫 导读
开发环境
版本号 | 描述 | |
---|---|---|
文章日期 | 2023-12-14 | |
操作系统 | Win11 - 22H2 | 22621.2715 |
WSL | 2 | |
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/
双击 Docker Desktop Installer .exe 以运行安装程序。
出现提示时,请确保选择或不选择“配置”页上的“使用 WSL 2 而不是 Hyper-V”选项,具体取决于所选的后端。
如果您的系统仅支持这两个选项之一,您将无法选择要使用的后端。
按照安装向导上的说明授权安装程序并继续安装。
安装成功后,选择**“关闭**”以完成安装过程。
如果管理员帐户与用户帐户不同,则必须将用户添加到 docker-users 组。
- 以管理员身份运行**“计算机管理”**,
- 然后导航到 “本地用户和组” > “组”> docker-users。
- 单击鼠标右键将用户添加到组中。
- 注销并重新登录以使更改生效。
2️⃣ 环境配置
Docker Desktop
安装后,从 Windows 开始菜单启动 Docker Desktop,然后从任务栏的隐藏图标菜单中选择 Docker 图标。 右键单击该图标以显示 Docker 命令菜单,然后选择“设置”。
- 确保在“设置”>“常规”中选中“使用基于 WSL 2 的引擎”。
- 通过转到“设置”>“资源”>“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
,将显示下面的内容,其流程整理如下:
- 本地查找名为
hello-world:latest
的image
(未找到)- 服务器下载
image
,显示其信息。- 执行Container(会创建一个Container)
- 打印了额外的说明信息
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
,将显示下面的内容,内容与第一次不一样了。
其流程也发生了变换,整理如下:
- 本地查找名为
hello-world:latest
的image
(找到了)- 拉取本地
image
,创建一个新的Container。- 执行新的Container
- 打印了额外的说明信息
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/
分析总结
- 两次执行只有一个image
hello-world
- 两次执行生成两个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
相关文章:

【Docker】WSL 2 上的 Docker 搭建和入门
▒ 目录 ▒ 🛫 导读开发环境 1️⃣ 安装安装Docker Desktop for Windows 2️⃣ 环境配置3️⃣ hello world第一次运行再次运行分析总结 📖 参考资料 🛫 导读 开发环境 版本号描述文章日期2023-12-14操作系统Win11 - 22H222621.2715WSL2 C:…...
pytorch环境配置
1.创建环境 conda create --name pytorch python3.11.5 2.激活环境 source activate pytorch 3.添加国内镜像源: conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsin…...

电子眼+无人机构建平安城市视频防控监控方案
电子眼(也称为监控摄像机)可以通过安装在城市的不同角落,实时监控城市的各个地方。它们可以用于监测交通违法行为、监控公共场所的安全以及实时监测特定区域的活动情况。通过电子眼的应用,可以帮助警方及时发现并响应各类安全事件…...
mysql binlog_ignore_db参数的效果详解
我们知道 binlog 会记录数据库所有执行的 DDL 和 DML 语句(除了数据查询语句select、show等)。 我们可以在mysql配置文件中关闭binlog [mysqld] skip-log-bin注意默认情况下会记录所有库的操作,那么如果我们有另类需求,比如说只让某个库记录 binglog 或排除某个库记录…...

HI3559AV100和FPGA 7K690T的PCIE接口调试记录-续
上文https://blog.csdn.net/fzktongyong/article/details/134963814?spm1001.2014.3001.5501 上一篇文中PCIE实测速度和理论计算有较大偏差,经过尝试后有所提升。 1、提升效果 1)、RC写操作,实测速度817MB/s(410407&…...
vivado约束方法4
时序约束向导 定时约束向导确定合成或上缺少的定时约束实现的设计。它分析了网表、时钟网络连接和现有的定时限制,以便根据《超快设计方法指南》提供建议用于FPGA和SoC(UG949)。以下11涵盖了三类约束页面,然后是摘要。包括以下步…...
LeetBook学习-C语言-数组
1.数组的操作 1.1 读取元素 知道内存地址可以快速访问,时间复杂度为O(1) 1.2 查找元素 从首地址开始,逐个查找,最坏时间复杂度为O(N) 1.3 插入元素 插入元素,首先位置要腾空,而后执行插入操作。 1.4 删除元素 删除掉某…...

23种策略模式之策略模式
23种策略模式之策略模式 文章目录 23种策略模式之策略模式前言优缺点使用场景角色定义UML模拟示例小结 前言 在软件开发中,设计模式是为了解决常见问题而提供的一套可重用的解决方案。策略模式(Strategy Pattern)是其中一种常见的设计模式&a…...

【笔试强化】Day 2
文章目录 一、选择1.2.(写错)3.4.5.6.(不会)7.(不清晰)8. (不会)9.10.(写错) 二、编程1. 排序子序列解法:代码: 2. 倒置字符串解法&am…...

windows禁用系统更新
1.在winr运行框中输入services.msc,打开windows服务窗口。 services.msc 2.在服务窗口中,我们找到Windows update选项,如下图所示: 3.双击windows update服务,我们把启动类型改为禁用,如下图所示ÿ…...

ES6原生音乐播放器(有接口)
视频展示 ES6音乐播放器 项目介绍 GutHub地址:GitHub - baozixiangqianchong/ES6_MusicPlayer: 音乐播放器 ES6_MusicPlayer 是基于JavaScriptES6Ajax等通过原生构建的项目。能够充分锻炼JS能力。 本项目有主页、详情页、歌单页面三部分组成 ├── assets&…...

Django和ECharts异步请求示例
前提条件 创建django项目,安装配置过程这里就不讲述了。 后端url http://127.0.0.1:8000/echarts/demo/ view视图函数 from django.http import HttpResponse import jsondef EchartsDemo(request):data {}categories ["衬衫","羊毛衫",&…...

Java序列化、反序列化-为什么要使用序列化?Serializable接口的作用?
什么是序列化和反序列化? 把对象转换成字节序列把字节序列恢复成对象 结合OSI七层协议模型,序列化和反序列化是在那一层做的? 在OSI七层模型中,序列化工作的层级是表示层。这一层的主要功能包括把应用层的对象转换成一段连续的二进…...
连锁零售企业如何优化网络性能?
在传统的WAN网络中,分支机构通常通过专线或者MPLS连接到总部或数据中心,但这种连接受制于地理位置。而SD-WAN(Software-Defined Wide Area Network)这种创新的网络架构,它通过软件定义和虚拟化技术,将分支机…...

[已解决]HttpMessageNotReadableException: JSON parse error: Unexpected character:解析JSON时出现异常的问题分析与解决方案
🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~ἳ…...
华为OD机试 - 找数字(Java JS Python C)
题目描述 小扇和小船今天又玩起来了数字游戏, 小船给小扇一个正整数 n(1 ≤ n ≤ 1e9),小扇需要找到一个比 n 大的数字 m,使得 m 和 n 对应的二进制中 1 的个数要相同,如: 4对应二进制100 8对应二进制1000 其中1的个数都为1个 现在求 m 的最小值。 输入描述 输入一个…...

ElasticSearch - networking配置global
版本8.11 单机部署了一个节点 在elasticsearch.yml中 配置了network.host: 8.8.8.8(之前为127.0.0.1) 但启动服务失败 报错信息为: BindTransportException: Failed to bind to 8.8.8.8:[9300-9399] 为啥要配置8.8.8.8 是因为参考的官方说明 Networking | Elasticsearch Gu…...

GPT4停止订阅付费了怎么办? 怎么升级ChatGPT plus?提供解决方案
11月中旬日OpenAI 暂时关闭所有的升级入口之后,很多小伙伴就真的在排队等待哦。其实有方法可以绕开排队,直接付费订阅升级GPT的。赶紧用起来立马“插队”成功!亲测~~~ 一、登录ChatGPT账号 1、没有账号可以直接注册一个,流程超级…...

MySQL数据库,视图、存储过程与存储函数
数据库对象: 常见的数据库对象: 视图: 视图是一种虚拟表,本身是不具有数据的占用很少的内存空间。 视图建立在已有表的基础上,视图赖以建立的这些表称为基表。 视图的创建和删除只影响视图本身,不影响对…...

【Pytorch】学习记录分享3——PyTorch 自动微分与线性回归
【【Pytorch】学习记录分享3——PyTorch 自动微分与线性回归 1. autograd 包,自动微分2. 线性模型回归演示3. GPU进行模型训练 小结:只需要将前向传播设置好,调用反向传播接口,即可实现反向传播的链式求导 1. autograd 包&#x…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关
在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…...

【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...