科普:“Docker Desktop”和“Docker”以及“WSL”

“Docker Desktop”和“Docker”这两个概念既有紧密联系,又存在一定区别:

一、联系

  • 核心功能同源:Docker Desktop 本质上是基于 Docker 核心技术构建的。Docker 是一个用于开发、部署和运行应用程序的开源平台,它利用容器化技术将应用及其依赖打包成独立的容器,实现应用的隔离和快速部署。Docker Desktop 继承了 Docker 的这些核心功能,为用户提供了便捷的方式来使用 Docker 的各项特性。
  • 操作对象一致:无论是使用 Docker Desktop 还是直接使用 Docker 命令行工具,操作的对象都是 Docker 镜像和容器。用户可以通过它们来拉取镜像、创建容器、管理容器的生命周期等操作。

二、区别

定义与定位
  • Docker:是一个广泛的概念,指的是整个 Docker 生态系统,包括 Docker 引擎(负责创建和管理容器的核心组件)、Docker 镜像、Docker 容器以及相关的命令行工具和 API 等。它是一个跨平台的开源项目,旨在提供一种标准化的方式来打包、分发和运行应用程序。
  • Docker Desktop:是 Docker 官方为桌面操作系统(如 Windows 和 macOS)专门开发的一款应用程序。它为用户提供了一个图形化界面,简化了 Docker 的安装和使用过程,使得非专业技术人员也能轻松使用 Docker 技术。
运行环境
  • Docker:可以在多种操作系统上运行,包括 Linux、Windows Server 和 macOS 等。在 Linux 系统中,Docker 通常以服务的形式运行,可以通过命令行工具进行操作。在 Windows Server 上,也可以安装 Docker 引擎来支持容器化应用的部署。
  • Docker Desktop:主要针对桌面用户,目前支持 Windows 10/11 以及 macOS 系统。它通过在桌面系统上模拟 Linux 环境,使得用户可以在本地开发和测试基于 Docker 的应用程序。
使用方式
  • Docker:主要通过命令行工具进行操作,用户需要熟悉一系列的 Docker 命令,如 docker rundocker builddocker ps 等。对于有一定技术基础的开发者和系统管理员来说,使用命令行可以更灵活地控制 Docker 的各项功能。
  • Docker Desktop:除了支持命令行操作外,还提供了图形化界面。用户可以通过直观的界面来管理镜像、容器、网络等资源,进行容器的启动、停止、删除等操作,降低了使用 Docker 的门槛。
功能特性
  • Docker:提供了丰富的命令行选项和 API,支持高级的容器管理和编排功能,如使用 Docker Compose 进行多容器应用的编排,使用 Docker Swarm 进行集群管理等。
  • Docker Desktop:除了基本的 Docker 功能外,还提供了一些额外的特性,如资源管理、镜像管理界面、Kubernetes 集成等。例如,用户可以通过 Docker Desktop 的界面轻松配置和管理本地的 Kubernetes 集群,方便进行容器化应用的开发和测试。

三、WSL

“适用于 Linux 的 Windows 子系统”(Windows Subsystem for Linux,简称 WSL)是微软开发的一项功能,允许用户在 Windows 操作系统上原生运行 Linux 二进制可执行文件,而无需使用传统的虚拟机或双启动设置。
当你在 Windows 系统上安装 Docker Desktop 时,如果检测到系统中没有安装 WSL 2,Docker Desktop 的安装程序通常会提示你安装 WSL 2。它会提供相关的指引和链接,引导你完成 WSL 2 的安装步骤。
Docker 命令既可以在 Windows 系统中执行,也能在 WSL 中执行,但在不同环境下执行存在一些区别

  • Windows 系统:可以通过 PowerShell 或命令提示符(CMD)来执行 Docker 命令。Docker Desktop 安装后会在 Windows 环境中集成 Docker 客户端,使得用户能够直接在 Windows 的命令行工具里使用 Docker 功能。
  • WSL:WSL 提供了一个接近原生 Linux 的环境,在安装了 Docker 客户端后,就可以在 WSL 的终端中执行 Docker 命令。
性能表现
  • Windows 系统:在 Windows 上执行 Docker 命令时,由于 Docker 容器实际上是运行在 WSL 2 虚拟机或 Hyper - V 虚拟机中,Windows 命令行与容器之间的交互需要经过一定的转换和通信,可能会存在一些性能损耗。
  • WSL:在 WSL 中执行 Docker 命令,因为 WSL 本身就是一个 Linux 环境,与 Docker 容器的兼容性更好,能够提供更接近原生 Linux 的性能。例如,在构建大型 Docker 镜像时,在 WSL 中执行 docker build 命令通常会比在 Windows 命令行中更快。
# 在 WSL 中构建一个简单的 Docker 镜像
cd /path/to/dockerfile
docker build -t my - image:latest .
文件路径处理
  • Windows 系统:Windows 使用反斜杠 \ 作为路径分隔符,而 Docker 命令通常期望使用正斜杠 /。在 Windows 命令行中执行 Docker 命令时,如果涉及到文件路径,需要将路径中的反斜杠转换为正斜杠,或者使用双反斜杠 \\。例如,挂载 Windows 上的一个目录到 Docker 容器中:
docker run -v C:/Users/User/Documents:/data my - image
  • WSL:WSL 使用 Linux 的路径格式,即正斜杠 /。在 WSL 中执行 Docker 命令时,文件路径的处理更加自然,与在原生 Linux 系统中一致。例如,将 WSL 中的一个目录挂载到 Docker 容器中:
docker run -v /home/user/data:/data my - image
环境变量和配置
  • Windows 系统:Windows 有自己的环境变量和配置方式,在 Windows 命令行中设置的环境变量可能需要特殊处理才能传递给 Docker 容器。例如,在 PowerShell 中设置环境变量并传递给 Docker 容器:
$env:MY_VARIABLE = "value"
docker run -e MY_VARIABLE=$env:MY_VARIABLE my - image
  • WSL:WSL 遵循 Linux 的环境变量和配置规则,设置和传递环境变量更加简单直接。例如,在 WSL 的终端中设置环境变量并传递给 Docker 容器:
export MY_VARIABLE="value"
docker run -e MY_VARIABLE=$MY_VARIABLE my - image
工具兼容性
  • Windows 系统:某些基于 Windows 的工具可能与 Docker 命令结合使用时存在兼容性问题。例如,一些 Windows 专用的文本编辑器或脚本语言可能在处理 Docker 相关的文件(如 Dockerfile)时不如在 Linux 环境中方便。
  • WSL:WSL 提供了丰富的 Linux 工具和命令行实用程序,与 Docker 生态系统的兼容性更好。可以直接使用 Linux 下的 vimgrep 等工具来编辑和处理 Docker 相关的文件和配置。例如,使用 vim 编辑 Dockerfile:
vim Dockerfile

四、Docker 命令

以下为你介绍不同应用场景下常见的 Docker 命令:在windows的命令行符下,带上docker,即是Docker 命令。

镜像操作命令
拉取镜像

从 Docker 镜像仓库中下载指定的镜像。

docker pull [镜像名称:标签]

示例:拉取 Ubuntu 22.04 版本的镜像

docker pull ubuntu:22.04
列出本地镜像

查看本地已下载的所有 Docker 镜像。

docker images
删除本地镜像

删除本地不需要的 Docker 镜像。

docker rmi [镜像 ID 或镜像名称:标签]

示例:删除刚才拉取的 Ubuntu 22.04 镜像

docker rmi ubuntu:22.04
容器操作命令
创建并运行容器

基于指定的镜像创建一个新的容器,并可以让它在后台或前台运行。

# 在前台运行容器
docker run [镜像名称:标签] [要执行的命令]
# 在后台运行容器,并指定容器名称和端口映射
docker run -d --name [容器名称] -p [主机端口]:[容器端口] [镜像名称:标签]

示例 1:以前台方式运行一个 Ubuntu 容器并执行 echo 命令

docker run ubuntu:22.04 echo "Hello, Docker!"

示例 2:以后台方式运行一个 Nginx 容器,并将主机的 8080 端口映射到容器的 80 端口

docker run -d --name my-nginx -p 8080:80 nginx
列出运行中的容器

查看当前正在运行的 Docker 容器。

docker ps

若要查看所有容器(包括已停止的),可使用以下命令:

docker ps -a
停止容器

停止一个正在运行的容器。

docker stop [容器 ID 或容器名称]

示例:停止刚才创建的 my - nginx 容器

docker stop my-nginx
启动已停止的容器

让一个已经停止的容器重新启动。

docker start [容器 ID 或容器名称]

示例:重新启动 my - nginx 容器

docker start my-nginx
删除容器

删除一个已停止的容器。

docker rm [容器 ID 或容器名称]

示例:删除 my - nginx 容器

docker rm my-nginx
进入正在运行的容器

在容器运行时,进入容器内部的命令行环境。

docker exec -it [容器 ID 或容器名称] [要执行的命令,一般为 /bin/bash 或 /bin/sh]

示例:进入一个正在运行的 Ubuntu 容器的命令行环境

docker exec -it my-ubuntu-container /bin/bash
其他常用命令
查看容器日志

查看容器的运行日志,方便排查问题。

docker logs [容器 ID 或容器名称]

示例:查看 my - nginx 容器的日志

docker logs my-nginx
查看容器资源使用情况

查看容器的 CPU、内存、网络等资源使用情况。

docker stats [容器 ID 或容器名称]

示例:查看 my - nginx 容器的资源使用情况

docker stats my-nginx

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AD(Altium Designer)器件封装——立创商城导出原理图和PCB完成器件封装操作指南

1、立创商城下载原理图和PCB图 1.1 打开立创商城 官网:www.SZLCSC.COM 1.2 寻找所需器件 以芯片为例 器件类——>芯片类——>对应芯片 1.3 确定所需芯片 确定芯片——>数据手册 1.4 打开原理图和PCB图 1:原理图 2:PCB 3:打开 1.5 导出原理图 操作

Kubernetes:EKS 中 Istio Ingress Gateway 负载均衡器配置及常见问题解析

引言 在云原生时代,Kubernetes 已经成为容器编排的事实标准。AWS EKS (Elastic Kubernetes Service) 作为一项完全托管的 Kubernetes 服务,简化了在 AWS 上运行 Kubernetes 的复杂性。Istio 作为服务网格领域的佼佼者,为微服务提供了流量管理…

【CUDA 】第4章 全局内存——4.4 核函数可达到的带宽(3展开转置)【补图】

CUDA C编程笔记 第四章 全局内存4.4 核函数可达到的带宽4.4.2.3 展开转置【为每个线程分配更独立的任务】 待解决的问题: 第四章 全局内存 4.4 核函数可达到的带宽 4.4.2.3 展开转置【为每个线程分配更独立的任务】 展开:提高转置内存带宽的利用率&a…

后端重载和重写的区别

重载 相同的方法名,形参数量不同或者参数顺序不同或者参数类型不同称为方法重载 重写 方法名和形参列表相同 重写方法前提:必须存在继承关系 (1)方法重载是:一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法…

字节最新AI 版IDE:用Trae开发网站打包信息追踪插件,国产版Cursor表现如何?

文章首发地址:https://juejin.cn/post/7472684607365922850 插件背景及项目概述 在现代前端开发中,我们常常需要获取当前线上环境的代码构建信息,如项目打包人、打包时间、Git版本信息等。在持续集成/持续交付(CI/CD&#xff09…

MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 1

第01章_Linux下MySQL的安装与使用 首先在vmware中下载centos7,实际上8更好一点,不过centos已经是时代的眼泪了,我之前已经教过了,不过是忘了,所以重新说一遍,看文档即可 2.开机前修改mac地址 &#xff0…

网络工程师 (47)QOS

一、概念与原理 QOS即服务质量(Quality of Service)是一种网络技术,用于管理和保证网络中不同类型的质量和性能。它通过设置优先级和带宽限制等策略,确保关键应用(如视频会议、语音通信)的数据包能够在网络…

什么是幂等性?

一.幂等性 什么是幂等性? 在计算机科学和数学领域中,” 幂等性 “虽然源于相同的概念,但其应用和具体含义有所不同 在数学中:幂等性是一个代数性质,描述的是一个操作或函数在多次应用后结果不变的特性 在分布式系统…

PyCharm Terminal 自动切换至虚拟环境

PyCharm 虚拟环境配置完毕后,打开终端,没有跟随虚拟环境切换,如图所示: 此时,需要手动将终端切换为 Command Prompt 模式 于是,自动切换至虚拟环境 每次手动切换,比较麻烦,可以单…

YOLOv12从入门到入土(含结构图)

论文链接:https://arxiv.org/abs/2502.12524 代码链接:https://github.com/sunsmarterjie/yolov12 文章摘要: 长期以来,增强YOLO框架的网络架构一直至关重要,但一直专注于基于cnn的改进,尽管注意力机制在建…

我用AI做数据分析之数据清洗

我用AI做数据分析之数据清洗 AI与数据分析的融合效果怎样? 这里描述自己在使用AI进行数据分析(数据清洗)过程中的几个小故事: 1. 变量名的翻译 有一个项目是某医生自己收集的数据,变量名使用的是中文,分…

解锁机器学习核心算法 | K-平均:揭开K-平均算法的神秘面纱

一、引言 机器学习算法种类繁多,它们各自有着独特的优势和应用场景。前面我们学习了线性回归算法、逻辑回归算法、决策树算法。而今天,我们要深入探讨的是其中一种经典且广泛应用的聚类算法 —— K - 平均算法(K-Means Algorithm&#xff09…

Bigemap Pro如何设置经纬网出图网格设置

第一步:打开bigemap pro软件,单击顶部网格选项第二栏,弹出经纬网设置对话框,如下图: 按作图需求自定义设置后,点击应用如下图: 第二步:设置好经纬网之后,进行作图&#x…

K8s 之端口暴露(The Port of K8s is Exposed)

K8s 之端口暴露 Kubernetes 是一个用于管理容器化应用程序的流行工具。然而,关于它的工作原理存在一些误解。最常见的误解之一是关于 Kubernetes Pod 中的端口暴露。本文将解释 Kubernetes 中端口暴露的真相。 1 误解 像许多 Kubernetes 新手一样,我最…

操作系统2.4

一、死锁,饥饿,死循环 死锁:各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象 饥饿:由于长期得不到想要的资源,某进程无法向前推进的现象,例如:短进…

解决DeepSeek服务器繁忙问题的实用指南

目录 简述 1. 关于服务器繁忙 1.1 服务器负载与资源限制 1.2 会话管理与连接机制 1.3 客户端配置与网络问题 2. 关于DeepSeek服务的备用选项 2.1 纳米AI搜索 2.2 硅基流动 2.3 秘塔AI搜索 2.4 字节跳动火山引擎 2.5 百度云千帆 2.6 英伟达NIM 2.7 Groq 2.8 Firew…

c++进阶———继承

1.引言 在一些大的项目中,我们可能要重复定义一些类,但是很麻烦,应该怎么办呢?举个简单的例子,我要做一个全校师生统计表,统计学号,教师编号,姓名,年龄,电话…

Android 平台GB28181设备接入实战指南

一、引言 随着视频监控技术的不断发展,国标 GB28181 协议在安防监控领域得到了广泛应用。该协议为不同厂家的视频监控设备之间的互联互通提供了统一的规范,使得设备的接入与管理变得更加简单和高效。在 Android 平台上实现 GB28181 设备接入&#xff0c…

细说Java 引用(强、软、弱、虚)和 GC 流程(一)

一、引用概览 1.1 引用简介 JDK1.2中引入了 Reference 抽象类及其子类,来满足不同场景的 JVM 垃圾回收工作: SoftReference 内存不足,GC发生时,引用的对象(没有强引用时)会被清理;高速缓存使用…

基于图像处理的裂缝检测与特征提取

一、引言 裂缝检测是基础设施监测中至关重要的一项任务,尤其是在土木工程和建筑工程领域。随着自动化技术的发展,传统的人工巡检方法逐渐被基于图像分析的自动化检测系统所取代。通过计算机视觉和图像处理技术,能够高效、精确地提取裂缝的几何特征,如长度、宽度、方向、面…