Docker介绍及其在WSL中的应用

这篇具有很好参考价值的文章主要介绍了Docker介绍及其在WSL中的应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 什么是Docker?

Docker是一种开源的容器化平台,用于构建、交付和运行应用程序。它提供了一种轻量级的容器化技术,可以将应用程序及其依赖项打包成一个独立的可执行单元,称为Docker容器。每个容器都运行在一个隔离的环境中,共享主机操作系统的内核,从而实现了高效、可移植和可扩展的应用程序部署。

以下是一些关键概念和组件,以帮助理解Docker的工作原理:

  1. Docker镜像(Image):Docker镜像是一个只读的模板,包含了运行应用程序所需的文件系统、代码、运行时环境、库和配置等。镜像可以被用来创建Docker容器。

  2. Docker容器(Container):Docker容器是从Docker镜像创建的运行实例。每个容器都是独立、隔离的运行环境,可以在其中运行应用程序。容器可以被启动、停止、删除等操作。

  3. Docker注册表(Registry):Docker注册表是用于存储和分发Docker镜像的中央仓库。Docker Hub是一个公共的Docker注册表,提供了大量的官方和社区维护的镜像。此外,你也可以搭建私有的Docker注册表来存储自己的镜像。

  4. Dockerfile:Dockerfile是一个文本文件,用于定义Docker镜像的构建过程。它包含了一系列的指令和配置,用于从基础镜像构建、配置和定制镜像。

  5. Docker Compose:Docker Compose是一个用于定义和管理多个Docker容器的工具。它使用一个YAML文件来描述应用程序的服务、网络和卷等配置,使得多个容器的编排和管理变得更加简单。

Docker的优势包括:

  • 轻量性和高效性:Docker容器与传统虚拟机相比,更加轻量和高效,启动快速,资源消耗较少。
  • 可移植性:Docker容器可以在各种操作系统和平台上运行,提供了一致的运行环境,减少了环境差异导致的问题。
  • 可复制性和可扩展性:Docker镜像的不可变性和可复制性使得应用程序的交付和部署变得更加简单和可靠,同时容器的可扩展性也使得应对高负载需求更加方便。

通过使用Docker,开发人员可以更加轻松地构建、交付和部署应用程序,同时运维人员也可以更好地管理和扩展应用程序的部署。


2 镜像和容器之间的关系

镜像(Image)和容器(Container)是Docker中的两个重要概念,它们之间的关系可以用下面的形象例子来说明:

想象一下你有一个应用程序,比如一个网站。镜像可以看作是该应用程序的软件打包,类似于一个装有应用程序及其依赖项的盒子。镜像包含了运行应用程序所需的文件系统、代码、运行时环境、库和配置等。

使用这个镜像,你可以创建多个相互独立的容器,每个容器都是一个运行实例,就像在现实世界中从一个盒子中取出一个独立的容器。每个容器都是独立的、隔离的运行环境,具有自己的文件系统、进程空间和网络接口。

类比到网站的例子,你可以将镜像看作是网站的源代码、静态文件和配置文件的打包,而容器则是在不同的服务器上运行这个网站的实例。你可以使用同一个镜像创建多个容器,每个容器都有自己的资源和运行环境,可以独立地提供网站服务。

假设你有一个名为"my-website"的镜像,它包含了你的网站代码和所需的依赖项。你可以通过运行以下命令创建一个容器:
docker run --name my-container -d my-website

这将使用"my-website"镜像创建一个名为"my-container"的容器,并在后台运行。现在你可以使用多个类似的命令创建多个容器,每个容器都是独立运行的网站实例。

通过这个例子,你可以理解镜像是容器的基础,容器则是镜像的运行实例。镜像提供了应用程序运行所需的所有文件和设置,而容器是基于镜像创建的、独立的运行环境。这种镜像和容器的关系使得应用程序的交付和部署变得更加简单、可靠和可扩展。


3 Docker守护进程

Docker守护进程(Docker daemon)是Docker引擎的核心组件之一。它是一个在后台运行的持续进程,负责管理Docker容器和镜像的创建、运行和销毁。

Docker守护进程在启动时会监听Docker客户端的请求,并根据客户端发送的命令执行相应的操作。它与Docker客户端通过Docker API进行通信,接收来自客户端的指令,并将其转化为实际的容器和镜像操作。

Docker守护进程具有以下功能:

  1. 镜像管理:Docker守护进程负责从Docker Hub或其他镜像仓库下载、创建、存储和管理Docker镜像。它可以拉取、推送和删除镜像,以及构建自定义的镜像。

  2. 容器管理:Docker守护进程负责创建、运行、停止和删除Docker容器。它可以根据定义的容器配置启动新容器,监控容器的运行状态,并根据需要进行扩展或缩减。

  3. 资源管理:Docker守护进程管理宿主机的资源分配和限制,包括CPU、内存、存储等。它可以在容器之间进行资源隔离和分配,以确保容器之间的互相独立性和性能稳定性。

  4. 网络管理:Docker守护进程负责管理Docker容器的网络连接和通信。它可以为容器分配IP地址,创建和管理网络接口,实现容器之间和容器与外部网络的通信。

  5. 日志记录:Docker守护进程负责收集和管理Docker容器和守护进程本身的日志信息。它可以将容器的标准输出和错误输出重定向到日志文件,以便用户进行故障排除和监控。

总之,Docker守护进程是Docker引擎的核心组件,它在后台运行并负责管理Docker容器和镜像的创建、运行和销毁。通过与Docker客户端的通信,它提供了一组功能丰富的API,使用户能够轻松地使用和管理Docker化的应用程序。


4 在WSL中安装Docker

在WSL中安装Docker需要以下步骤:

  1. 打开WSL终端:在Windows 10中,可以通过在开始菜单中搜索并打开"WSL"或直接运行WSL发行版(如Ubuntu)来打开WSL终端。

  2. 更新系统:在WSL终端中运行以下命令,确保系统为最新版本:
    sudo apt update
    sudo apt upgrade

  3. 安装Docker的依赖项:运行以下命令以安装Docker所需的依赖项:
    sudo apt install apt-transport-https ca-certificates curl software-properties-common

    • apt-transport-https 是一个 apt 的插件,允许 apt 使用 HTTPS 协议来下载软件包和更新。HTTPS 是一种安全的通信协议,可以防止数据在传输过程中被篡改。
    • ca-certificates 是一个用于管理和更新操作系统上的证书颁发机构(Certificate Authorities,简称CA)证书的软件包。它包含了一组信任的根证书,用于验证 HTTPS 连接和其他安全通信。
    • curl 是一个命令行工具,用于发送 HTTP 请求并显示响应。在这个命令中,curl 主要用于下载和获取软件包。
    • software-properties-common 是一个软件包,提供了 add-apt-repository 命令,用于添加软件仓库源。通过它,可以向系统添加第三方软件源,并使用 apt 来安装来自这些源的软件包。
  4. 添加Docker的官方GPG密钥:运行以下命令以添加Docker官方的GPG密钥:
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

    • curl 是一个用于发送 HTTP 请求并显示响应的命令行工具。在这个命令中,curl 被用来从指定的 URL 下载文件。
    • -fsSL: 这是 curl 命令的一些选项标志。具体解释如下:
      • -f: 如果服务器返回的 HTTP 状态码表示请求失败,curl 不会显示错误信息。
      • -s: 静默模式,不显示进度或错误信息。
      • -S: 如果发生错误,则显示错误信息。
    • https://download.docker.com/linux/ubuntu/gpg: 这是要下载的文件的 URL,它指向 Docker 在 Ubuntu 上的官方 GPG 密钥文件。GPG 密钥用于验证下载的 Docker 软件包的完整性和真实性。
    • |: 这是管道操作符,将 curl 的输出通过管道传递给后面的命令。
    • sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg: 这是通过管道接收来自 curl 的数据,并使用 gpg 工具进行处理的命令。具体解释如下:
      • gpg 是一个用于加密、解密和签名文件的命令行工具。在这个命令中,gpg 用于解析通过管道传递的 GPG 密钥文件,并将其解密成可读的二进制格式。
      • --dearmor: 这是 gpg 命令的选项,用于将 GPG 密钥文件解析为二进制格式。
      • -o /usr/share/keyrings/docker-archive-keyring.gpg: 这是 gpg 命令的选项,用于将解析后的密钥输出到指定的文件路径。在这个命令中,密钥将被输出到 /usr/share/keyrings/docker-archive-keyring.gpg 文件中。

综上所述,该命令的作用是通过 curl 下载 Docker 的官方 GPG 密钥文件,并使用 gpg 解析和解密该密钥,并将其输出到 /usr/share/keyrings/docker-archive-keyring.gpg 文件中。这是为了后续在 Ubuntu 系统上安装 Docker 软件包时使用该密钥进行验证。由于操作涉及到系统文件,因此需要使用 sudo 命令以管理员权限执行。

  1. 添加Docker的APT存储库:运行以下命令以添加Docker的APT存储库:
    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    这个命令的目的是将 Docker 软件源添加到系统的 APT 软件源列表中。下面是对该命令的逐个解析:
    • echo 是一个命令行工具,用于打印(输出)指定的文本或字符串。在这个命令中,echo 用于输出 Docker 软件源的信息。
    • "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable": 这是要输出的文本或字符串。它是一个包含 Docker 软件源信息的字符串,具体解释如下:
      • deb: 这是 APT 软件源的条目类型之一,表示二进制软件包。
      • [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]: 这是对 Docker 软件源条目的描述,指定了要使用的体系结构(amd64)和签名文件的位置。
      • https://download.docker.com/linux/ubuntu: 这是 Docker 软件源的 URL,指向 Docker 在 Ubuntu 上的软件包仓库。
      • $(lsb_release -cs): 这是一个命令替换,用于获取当前 Ubuntu 系统的发行版代号。lsb_release -cs 命令将返回当前系统的代号(如 “bionic”、“focal” 等),用于构建正确的软件源 URL。
      • stable: 这是 Docker 软件源的分支或版本,指定了要使用的稳定版本的软件包。
      • |: 这是管道操作符,将 echo 的输出通过管道传递给后面的命令。
    • sudo tee /etc/apt/sources.list.d/docker.list > /dev/null: 这是通过管道接收来自 echo 的数据,并使用 tee 命令将数据写入文件的命令。具体解释如下:
      • tee 是一个命令行工具,用于从标准输入接收数据,并将其写入一个或多个文件,同时也将数据输出到标准输出。在这个命令中,tee 用于将来自管道的数据写入文件。
      • /etc/apt/sources.list.d/docker.list: 这是要写入的文件路径,它位于 /etc/apt/sources.list.d/ 目录下,用于存储用户自定义的软件源列表。在这个命令中,Docker 软件源的条目将被写入到该文件中。
      • > /dev/null: 这是重定向符号,将 tee 命令的标准输出重定向到 /dev/null,表示将输出丢弃,不显示在终端上。

综上所述,该命令的作用是将 Docker 软件源的条目信息写入到 /etc/apt/sources.list.d/docker.list 文件中,以便在后续使用 apt 命令时能够使用该软件源。由于操作涉及到系统文件,因此需要使用 sudo 命令以管理员权限执行。/dev/null 部分表示不显示 tee 命令的输出。

  1. 安装Docker:运行以下命令以安装Docker:
    sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io`
    这是两个命令,用于更新软件包列表并安装 Docker 容器引擎。让我们逐个解析这些命令:
    • sudo apt update: 这个命令用于更新系统的软件包列表。
    • sudo apt install docker-ce docker-ce-cli containerd.io: 这个命令用于安装 Docker 容器引擎及其相关组件。具体解析如下:
      • docker-ce 是 Docker Community Edition(社区版)的缩写,是 Docker 容器引擎的核心软件包。
      • docker-ce-cli 是 Docker Community Edition Command Line Interface(命令行界面)的缩写,是 Docker 容器引擎的命令行工具软件包。
      • containerd.io 是一个用于管理容器运行时的开源项目,它是 Docker 容器引擎的一部分,负责管理容器的生命周期。

综上所述,该命令的作用是使用 apt 安装 Docker 容器引擎及其相关组件。这将安装 Docker Community Edition(社区版)的核心软件包 docker-ce、命令行工具软件包 docker-ce-cli,以及容器运行时管理工具 containerd.io

执行这两个命令将使系统更新软件包列表,并安装 Docker 容器引擎,从而使用户能够在系统上运行和管理 Docker 容器。

  1. 验证安装:运行以下命令以验证Docker是否正确安装并正在运行:
    sudo docker run hello-world
    这个命令是在安装了 Docker 容器引擎后运行的一个示例命令 :
    • docker 是 Docker 容器引擎的命令行工具。在这个命令中,docker 用于与 Docker 容器引擎进行交互。
    • rundocker 命令的一个参数,用于运行一个容器。
    • hello-world 是一个示例容器镜像的名称。Docker 容器镜像是一个包含完整的运行时环境的独立软件包。在这个命令中,hello-world 是一个简单的示例容器镜像,用于测试 Docker 安装和配置是否正确。

综上所述,该命令的作用是在 Docker 容器引擎中运行一个名为 hello-world 的示例容器镜像。执行该命令后,Docker 将下载 hello-world 容器镜像(如果本地不存在),并在容器中运行该镜像。镜像运行后将输出一些信息,表示 Docker 已经正确安装并正常工作。

注意:由于该命令需要与 Docker 容器引擎进行交互,因此需要使用 sudo 命令以管理员权限执行。

如果一切顺利,你将看到一个简单的Docker容器运行并输出"Hello from Docker!"的消息。如果输出docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.See 'docker run --help'说明未启动docker守护进程,先运行sudo service docker start,然后再运行 一次sudo docker run hello-world,就成功了。

现在你已经成功在WSL中安装了Docker。你可以使用Docker命令行工具来管理和运行容器,构建和发布镜像等。请注意,WSL中运行的Docker实际上是在Windows系统上运行的Docker守护进程,因此你可以使用Windows上的Docker工具和GUI进行交互。


5 WSL中用命令行管理docker

在WSL中安装Docker后,你可以使用命令行工具来管理Docker容器和镜像。下面是一些常用的Docker命令:

  1. 启动Docker服务:在WSL终端中,运行以下命令来启动Docker守护进程:
    sudo service docker start

    或者使用以下命令来启动Docker服务并设置开机自启动:
    sudo systemctl enable --now docker

  2. 验证Docker安装:运行以下命令来验证Docker是否正确安装并正在运行:
    sudo docker run hello-world

    如果一切顺利,你将看到一个简单的Docker容器运行并输出"Hello from Docker!"的消息。

  3. Docker镜像操作:

    • 拉取镜像:运行以下命令来拉取一个Docker镜像:
      sudo docker pull image_name:tag

    • 列出镜像:运行以下命令来列出已下载的Docker镜像:
      sudo docker images

    • 删除镜像:运行以下命令来删除一个Docker镜像:
      sudo docker rmi image_name:tag

  4. Docker容器操作:

    • 创建容器:运行以下命令来创建一个Docker容器:
      sudo docker create --name container_name image_name:tag

    • 启动容器:运行以下命令来启动一个Docker容器:
      sudo docker start container_name

    • 停止容器:运行以下命令来停止一个运行中的Docker容器:
      sudo docker stop container_name

    • 列出容器:运行以下命令来列出正在运行的Docker容器:
      sudo docker ps

    • 删除容器:运行以下命令来删除一个Docker容器:
      sudo docker rm container_name

这只是Docker命令的一小部分,你可以通过运行sudo docker --help或查阅Docker文档来了解更多命令和选项。使用这些命令,你可以管理Docker容器和镜像,构建自定义镜像,设置容器网络等。


6 删除镜像的注意事项

在 Docker 中删除镜像的前提是该镜像不在使用中,没有基于该镜像运行的容器实例。

Docker 镜像是容器的基础,如果有容器正在使用该镜像,那么镜像将被视为被使用中,不可直接删除。因此,在删除镜像之前,需要确保没有正在运行的容器使用该镜像。

要删除镜像,可以按照以下步骤进行操作:

  1. 使用 docker ps -a 命令查看所有容器的列表,包括运行中和已停止的容器。确认没有基于要删除的镜像运行的容器。

  2. 如果存在正在运行的容器使用了要删除的镜像,需要停止这些容器。可以使用 docker stop <容器ID> 命令停止容器。多个容器可以通过逐个指定容器ID来停止,或者使用通配符等方式进行批量停止。

  3. 确认所有使用要删除镜像的容器都已停止后,可以使用 docker rmi <镜像ID> 命令删除镜像。可以通过 docker images 命令查看当前系统中的镜像列表,获取要删除的镜像的ID。

请注意,删除镜像是一个不可逆的操作,删除后无法恢复。确保在删除之前进行了必要的备份和确认操作。

本文简单介绍了Docker以及在WSL中安装使用docker,通过网上查阅资料和自己的笔记整理并成功实践于PC,最终上传分享给大家,供大家参考,希望能够帮到勤奋学习的诸位,有不合理的地方,欢迎各位大佬指正评论,创作不易,不喜勿喷,谢谢!文章来源地址https://www.toymoban.com/news/detail-713644.html

到了这里,关于Docker介绍及其在WSL中的应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023保姆级:深度学习环境在Docker上搭建(基于Linux和WSL)

    在深度学习领域,配置环境的常见做法是使用conda来实现环境隔离。conda是一个广泛使用的工具,用于创建和管理特定的环境,通过在不同的环境中设置特定的Python环境变量路径,实现了环境的特异化。为了实现这一目的,需要将终端置于conda的管理之下。如果你已经安装了

    2024年02月06日
    浏览(48)
  • WSL2配置Linux、Docker、VS Code、zsh、oh my zsh

    本篇笔记来自于UP主麦兜搞IT的合集视频Windows10开发环境搭建中的部分内容 按照微软官方文档进行操作,当然也可以直接 wsl --install 也可以按照 旧版手动安装的步骤 来进行操作 选择安装的是 Ubuntu 20.04 LTS 注:WSL默认安装在系统盘下,若长期使用务必注意系统盘大小!! 在

    2024年02月22日
    浏览(54)
  • 基于Docker的深度学习环境NVIDIA和CUDA部署以及WSL和linux镜像问题

    docker的介绍网上有很多,对于深度学习的认来讲,docker的好处就是直接把环境分享给他人,他人不需要再配置环境了。 比如我有一个目标检测的项目,我想分享给朋友,那么他首先需要在自己的电脑上配置好显卡驱动、CUDA、CuDNN,在拿到我的项目后,还需要安装各种依赖库,

    2024年02月05日
    浏览(44)
  • 这里做一篇关于wsl2更新到最新版本使用镜像网络,但是docker创建的容器不能被访问的问题(困扰了我一整天)

    在windows2023年9月的一次更新中,wsl2支持了新的网络模式镜像模式,他能够通过localhost地址从wsl2内部连接到windows的127.0.0.1地址 ##相当于是和本地主机拥有同一个ip 原wsl2是不支持的,虽说是net网络模式,可访问主机,主机也可访问wsl2,同时也可上网,但是不能被网络访问,如

    2024年04月16日
    浏览(51)
  • window11系统基于 wsl2 安装Linux发行版ubuntu,并安装docker及vscode

    WSL是“Windows Subsystem for Linux”的缩写,顾名思义,WSL就是Windows系统的Linux子系统,其作为Windows组件搭载在Windows10周年更新(1607)后的Windows系统中。 既然WSL是“子系统”,那么WSL的地位我们能大概推测出—— “子系统”作为系统层的一部分,相较于应用层(虚拟机)会消耗

    2024年02月13日
    浏览(62)
  • WSL dockers容器挂载windows下的文件

    请注意,您需要将Windows用户名和测试数据目录替换为您在Windows上实际使用的用户名和测试数据目录。例如,如果您的Windows用户名是bear,测试数据目录位于C:Usersbeartest-20240104,则命令应该如下所示: 再例如我的文件在windows下面是 C:UsersLenovoDesktoptest-20240104

    2024年01月16日
    浏览(46)
  • Docker初次体验:WSL+Docker+portanier

    老王我为了能提高薪水,找到好工作,只能好好学习最新的技术了。今天来学习Docker。 Docker——Windows版本Docker安装 Docker简单来说就是更加迷你的虚拟机,他比虚拟机迷你的原因就是因为他减去的操作系统的检查启动项,比如硬盘,CPU,显示器,网络驱动等功能。Docker一般都

    2024年01月23日
    浏览(29)
  • wsl 安装 docker

    1、wsl就是在windows上安装一个类似linux的环境(可以理解为在win上启了一个Linux的虚拟机),可以用来调试一些无法在windows上成功运行的代码。 2、WSL是微软官方提供的,好像是不收费 3、在win10上安装wsl,wsl分为两个版本:wsl1和wsl2,新安装的好像都是wsl2,之前安装的是wsl1。ws

    2024年02月11日
    浏览(29)
  • 【Docker】WSL 2 上的 Docker 搭建和入门

    开发环境 版本号 描述 文章日期 2023-12-14 操作系统 Win11 - 22H2 22621.2715 WSL 2 首先安装WSL,可以参考文章《【WSL】Windows下的Linux子系统使用方法指南 https://blog.csdn.net/kinghzking/article/details/134984077》。 否则,启动Docker,会报下面的错误: 安装Docker Desktop for Windows 官网教程:https:/

    2024年01月17日
    浏览(34)
  • wsl中docker自启动

    前言 wsl -l -v # 查看 wsl 的状态 wsl -t Ubuntu # 关闭指定版本 wsl -d Ubuntu # 启动指定版本 通过命令 ps -p 1 -o comm= 我们知道我们用的是 init ,故我们将 systemd 命令修改为 SysV init命令。 ps -p 1 -o comm= 更换命令,用SysV init的命令代替systemd WSL2内操作 Windows内操作 在 windows 系统上创建一个

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包