【Docker】Windows11操作系统下安装、使用Docker保姆级教程

【Docker】Windows11操作系统下安装、使用Docker保姆级教程

大家好 我是寸铁👊
总结了一篇【Docker】Windows11操作系统下安装、使用Docker保姆级教程的文章✨
喜欢的小伙伴可以点点关注 💝

前言

什么是 Docker?

Docker 是一个开源平台,支持开发人员构建部署运行更新管理容器,这些容器是标准化的可执行组件,结合了应用源代码以及在任何环境中运行该代码所需的操作系统 (OS) 库和依赖项。

容器简化了分布式应用的部署和交付过程。 随着组织转向云原生开发和混合多云环境,它们已变得越来越流行。 开发人员可以直接使用 Linux 和其他操作系统中内置的功能,在没有 Docker 的情况下创建容器。 但 Docker 使容器化更加迅速、简便和安全。 截至本文撰写之时,Docker 报告称,已有超过 1300 万名开发人员在使用该平台(链接位于 ibm.com 外部)。

Docker 也指 Docker, Inc.(链接位于 ibm.com 外部),即销售 Docker 商业版本的企业,还可以是 Docker, Inc. 和许多其他组织和个人开展的 Docker 开源项目。


容器的工作原理

容器是通过 Linux 内核中内置的过程隔离和虚拟化功能来实现的。 控制组 (Cgroups) 用于为各进程分配资源名称空间(namespace)用于限制进程访问或对其他资源或系统区域的可视性 ,这些功能支持多个应用组件共享主机操作系统的单个实例的资源,这与系统管理程序支持多台虚拟机 (VM) 共享单个硬件服务器的 CPU内存和其他资源的方式大致相同。


容器的架构

在这里插入图片描述

Docker 包括三个基本概念:

- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建启动停止删除暂停等。

- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像


Docker的优势

因此,容器技术可提供虚拟机的所有功能和优势,包括应用隔离、经济高效的可扩展性和可处置性,以及其他重要的优势:

  • 更轻巧:与虚拟机不同,容器不会承载整个操作系统实例和系统管理程序的有效负载。 它们仅包括执行代码所需的操作系统进程和依赖项。 容器大小以兆字节为单位(某些虚拟机则是以千兆字节为单位)来衡量,因此它们可以更好地利用硬件容量,启动速度也更快

  • 提高了开发人员的工作效率:容器化应用可以“一次编写,随处运行”。 与虚拟机相比,容器的部署、配置和重启过程更迅速且更简单。 这使得容器非常适合在持续集成和持续交付 (CI/CD) 管道中使用,并且更适合采取敏捷DevOps 实践的开发团队。

  • 提高了资源利用率:开发人员使用容器在硬件上运行的应用副本数量是使用虚拟机的数倍。 这可以减少云支出

为何使用 Docker?

Docker 如今非常受欢迎,甚至可以与“容器”一词互换使用。 而在 Docker 于 2013 年面世之前,第一批与容器相关的技术早已存在数年,甚至数十年(链接位于 IBM 外部)。

最值得注意的是,2008 年,Linux 内核中实现了 LinuXContainers (LXC),LXC 完全支持单个 Linux 实例的虚拟化。 虽然目前仍在使用 LXC,但也提供了使用 Linux 内核的新技术。 现代的开源 Linux 操作系统 Ubuntu 也提供了此功能。

Docker 支持开发人员使用简单的命令访问这些本机容器化功能,并通过节省工作量的应用程序编程接口 (API) 自动执行。 与 LXC 相比,Docker 提供了以下功能:

  • 增强的无缝容器可移植性:虽然 LXC 容器通常引用特定于机器的配置,但 Docker 容器无需修改即可在任何桌面、数据中心和云环境中运行。

  • 更轻巧且更细粒度的更新:通过使用 LXC,可以在单个容器中组合多个进程。 这样就可以构建持续运行的应用,即使为了更新或修复而关闭某个部分也不例外。

  • 自动化容器创建:Docker 可以基于应用源代码自动构建容器。

  • 容器版本控制:Docker 可以跟踪容器映像的版本,回滚到先前的版本,以及跟踪版本的构建者和构建方式。 它甚至可以只上传现有版本和新版本之间的增量

  • 容器复用:现有容器可用作基本映像(本质上类似于用于构建新容器的模板)。

  • 共享容器库:开发人员可以访问包含数千个用户贡献容器的开源注册表

如今,Docker 容器化也适用于 Microsoft Windows 和 Apple MacOS。 开发人员可以在任何操作系统上运行 Docker 容器,大多数领先的云提供商(包括 Amazon Web Services (AWS)、Microsoft Azure 和 IBM Cloud)都提供了一些专用服务,这些服务可帮助开发人员构建、部署和运行使用 Docker 进行容器化的应用。


在初步认识了解了Docker后,下面正式进入Docker使用环节!

一、进入Docker官网

首先先到Docker官网下载最新官方Docker for Windows链接:Docker下载

在这里插入图片描述


二、启动Microsoft Hyper-V

在电脑上打开“控制面板”->“程序”-> “启动或关闭Windows功能”。

在这里插入图片描述

  • 勾选Hype-V功能

在这里插入图片描述

  • 并勾选如下内容:

在这里插入图片描述


三、安装Docker

在Windows上安装Docker桌面版

  • 双击程序,如下:
    在这里插入图片描述

  • 点击OK,确定安装WSL

在这里插入图片描述

  • 等待安装完毕!

在这里插入图片描述


  • 安装完毕后,点击Close and restart

在这里插入图片描述


  • 电脑重启后,点击Docker程序会看到如下界面

在这里插入图片描述


  • 默认勾选,点击Finish即可完成
    在这里插入图片描述

  • 等待启动Docker引擎

在这里插入图片描述

  • 报错如下:

在这里插入图片描述

  • 重新更新一下wsl版本,如下命令

在这里插入图片描述

在这里插入图片描述

  • 报错如下:点击restart重启即可。
    在这里插入图片描述

  • 现在程序正常启动并稳定啦

在这里插入图片描述


四、玩转Docker

  • 命令行输入如下命令
docker --version

在这里插入图片描述

至此就可以在windows上开始Docker之路啦!

五、运行Hello-world

  • 运行Hello-world,使用如下命令:
docker pull hello-world

在这里插入图片描述

  • 查看是否拉取成功?

在这里插入图片描述

显示Hello-world镜像确实存在!

  • 查看可视化容器镜像,显示如下:

在这里插入图片描述

至此拉取Hello-world成功!


六、配置阿里云镜像加速

  • 刚才的pull操作比较慢,接下来需要配置一下镜像代理,便于更快速的拉取资源!

  • 登录阿里云官网:镜像加速器(需要账号登录)

在这里插入图片描述

地址是免费的,每个人都有。


  • 将如下代码添加到Docker的设置中
"registry-mirrors": ["https://inhj05a1.mirror.aliyuncs.com"]
  • 进入设置的页面

在这里插入图片描述


  • 添加如下:

    点击Apply andr esatrt 运用并重启即可

在这里插入图片描述

至此配置阿里云镜像加速完毕!


七、容器常用命令

查看版本

docker --version

在这里插入图片描述


获取镜像

如果我们本地没有 mysql镜像,我们可以使用docker pull命令来载入 mysql镜像:

在这里插入图片描述

启动容器

以下命令使用 mysql镜像启动一个容器,参数为以命令行模式进入该容器:

docker run -it mysql /bin/bash

输入exit容器停止运行

所以,更常用的是这种后台启动的方式:

docker run -itd mysql /bin/bash

注意每run一个就创建一个容器!

参数说明:

  • -i: 交互式操作。
  • -t: 终端。
  • mysql: mysql镜像。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
    要退出终端,直接输入 exit

在这里插入图片描述


查看容器

常用命令如下:

docker ps -a

在这里插入图片描述

docker ps -q

在这里插入图片描述

ps:列出正在运行的容器。

参数说明:

  • -a:列出所有容器(包括停止的容器)。
  • -q:仅显示容器ID。
  • -f:根据过滤器条件过滤输出。
  • "name=CONTAINER_NAME":过滤器条件,匹配指定名称的容器。

停止容器

docker stop 容器ID

在这里插入图片描述


重启容器

docker restart 容器ID

在这里插入图片描述

在这里插入图片描述

发现容器的状态为Up代表启动!


查找进程号(PID)

在一些场景中需要,通过容器ID来查找背后的进程号(PID),操作如下:

  • 先查找容器ID
docker ps -a

在这里插入图片描述

  • 传入容器ID查找PID

方式二如下:

docker inspect -f '{{.State.Pid}}' 容器ID

在这里插入图片描述

方式三如下:

docker container top  容器ID

在这里插入图片描述

这里显示pid 需要特别说明一下,容器的pid 是932 ,PPID 是它的父进程。下面的显示的内容都是它的子进程。


linux下还提供ps命令来提供查询

 ps aux | grep 容器ID

运行结果如下:

在这里插入图片描述

补充
  • 如何通过PID来启停一个容器?

在Windows中无法通过PID来启停一个容器。
只能通过docker命令控制容器的ID来启停容器。

但是,linux可以使用sudo命令kill掉容器的pid从而控制容器的停止。
如下,容器被关闭,处于not running状态。

在这里插入图片描述


看到这里的小伙伴,恭喜你又掌握了一个技能👊
希望大家能取得胜利,坚持就是胜利💪
我是寸铁!我们下期再见💕

往期好文💕

保姆级教程

【保姆级教程】Windows11下go-zero的etcd安装与初步使用

【保姆级教程】Windows11安装go-zero代码生成工具goctl、protoc、go-zero

【Go-Zero】手把手带你在goland中创建api文件并设置高亮


报错解决

【Go-Zero】Error: user.api 27:9 syntax error: expected ‘:‘ | ‘IDENT‘ | ‘INT‘, got ‘(‘ 报错解决方案及api路由注意事项

【Go-Zero】Error: only one service expected goctl一键转换生成rpc服务错误解决方案

【Go-Zero】【error】 failed to initialize database, got error Error 1045 (28000):报错解决方案

【Go-Zero】Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)报错解决方案

【Go-Zero】type mismatch for field “Auth.AccessSecret“, expect “string“, actual “number“报错解决方案

【Go-Zero】Error: user.api 30:2 syntax error: expected ‘)‘ | ‘KEY‘, got ‘IDENT‘报错解决方案

【Go-Zero】Windows启动rpc服务报错panic:context deadline exceeded解决方案


Go面试向

【Go面试向】defer与time.sleep初探

【Go面试向】defer与return的执行顺序初探

【Go面试向】Go程序的执行顺序

【Go面试向】rune和byte类型的认识与使用

【Go面试向】实现map稳定的有序遍历的方式

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

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

相关文章

【优选算法】前缀和

前缀和思想其实就是一种简单的dp思想,也就是动态规划 什么时候用到前缀和?当要快速求出数组中某一个区间的和 前缀和模板 暴力解法 定义一个指针从左向右遍历,并且累加值即可,这里就不过多赘述,主要还是来看前缀和…

缓存雪崩、击穿、穿透

目录 前言 一、缓存雪崩 1.大量数据同时过期 1.均匀设置过期时间 2.互斥锁 3.后台更新缓存 2.Redis故障宕机 1.服务熔断或请求限流机制 2.构建Redis缓存高可靠集群 二、缓存击穿 1.设置互斥锁; 2.不给热点数据设置过期时间,由后台更新缓存。 …

可行性研究报告-范例直接套用

1业务需求可行性分析 2技术可行性分析 2.1规范化原则 2.2高度的兼容性和可移植性 2.3人性化、适用性 2.4标准化统一设计原则 2.5先进安全可扩展性原则 3开发周期可行性分析 4人力资源可行性分析 5成本分析 6收益分析 7结论 软件开发多套实际项目案例、方案、源码获取&#xff1…

使用API有效率地管理Dynadot域名,进行DNS域名解析

关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…

nodejs,JSDOM 补 window环境

window[atob] 是一个在浏览器中使用的 JavaScript 函数,用于将 base64 编码的字符串解码为原始数据。具体来说,atob 函数会将 base64 字符串解码为一个 DOMString,其中包含解码后的二进制数据。这在处理从服务器获取的 base64 编码的数据或在…

RedisDesktopManager连接Ubuntu的Redis失败解决办法

配置redis 1.设置redis在后台服务,修改配置文件 默认情况下是 no ,修改为yes,可以后台服务 2、设置redis端口,默认端口是6379,可以根据自己的需要,找到/et/redis/redis.conf文件, 修改port 3、设置密码 配置文件中…

基于pytorch的手写体识别

一、环境搭建 链接: python与深度学习——基础环境搭建 二、数据集准备 本次实验用的是MINIST数据集,利用MINIST数据集进行卷积神经网络的学习,就类似于学习单片机的点灯实验,学习一门机器语言输出hello world。MINIST数据集,可以…

【书籍推广】这本书太好了!150页就能让你上手大模型应用开发

文章目录 蛇尾书特色蛇尾书思维导图作译者简介业内专家书评 如果问个问题:有哪些产品曾经创造了伟大的奇迹?ChatGPT 应该会当之无愧入选。仅仅发布 5 天,ChatGPT 就吸引了 100 万用户——当然,数据不是关键,关键是其背…

【Unity】VR开发的正确测试节奏

【背景】 VR开发由于其测试时对设备的依赖较大,因此有时在没有测试条件时想当然地写了大量代码,一旦到正式测试时需要debug,往往无法判断到底是哪个环节的问题(代码,环境,等等)。相对于PC平台的…

AI预测福彩3D第2弹【2024年3月5日预测】

书接上回,首先声明下,写这一系列文章的目的不为别的,就是想看下到底使用一些强大的AI算法能不能挖掘出彩票的规律,毕竟彩票的规律太乱,不是说没有规律,而是规律太多。经过上一篇文章的图片,大家…

git使用教程14-Pycharm版本控制与分支管理

一、版本控制 1、版本控制介绍 (1)Version Control System 版本控制系统,简称VCS。 (2)版本控制系统分类: 集中式版本控制工具:SVN 分布式版本控制工具:Git 2、Pycharm 支持的版本…

C++:Vector的使用

一、vector的介绍 vector的文档介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以…

全链路监控

1. 全链路监控的兴起与发展 当代的互联网的服务,通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器&…

CentOS 7操作系统安装教程

CentOS 7操作系统安装教程 CentOS 7是一款功能强大、稳定可靠的操作系统,适用于服务器、桌面等多种场景。下面将介绍CentOS 7的安装教程。 准备工作 下载CentOS 7镜像文件:https://mirrors.tuna.tsinghua.edu.cn/centos/7/isos/x86_64/准备安装介质&am…

【新书推荐】13.2 应用举例

本节内容:磁盘文件管理功能号调用应用举例。 ■例1:显示文本文件内容t13-1.asm。 ■例2:将键盘输入字符存入文件t13-2.asm。 ■例3:文件拼接t13-3.asm。 13.2.1 例1:显示文本文件内容 动手实验93:写一个…

Centos 9 安装 k8s

为了尽可能契合生产环境的部署情况,这里用kubeadm安装集群,同时方便跟随笔记一步步实践的过程,也更加了解k8s的一些特性和基础知识。 先决条件 这里将通过虚拟机安装3台centos stream 9服务器,并组成kubeneters集群(…

如何在MinIO系统中进行配置并结合内网穿透实现公网远程连接上传文件

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 前言 MinIO是一款高性能、分布式的对象存储系统,它可以100%的运行在标准硬件上,即X86等…

ROS2中std_msgs/msg/Header 数据含义及使用

ROS2中std_msgs/msg/Headerr 数据含义及使用 ROS官方消息说明数据说明使用ros2标准的Header案例代码解释测试结果 ROS官方消息说明 ROS2中std_msgs消息包含类型 https://docs.ros2.org/latest/api/std_msgs/msg/std_msgs/msg/Header Message std_msgs/msg/Header数据格式&…

“零碳未来”:引领全球向低碳经济转型

全球环境基金(GEF),这个由183个国家和地区组成的国际合作组织,是世界银行1990年创建的实验项目,一直致力于支持环境友好型项目,推动全球环境改善。而“零碳未来”不仅是一个由全球环境基金(GEF)创建的跨越国界的全新交易平台,更是一个致力于推动全球向低碳经济转型的零碳排放生…

ChromeDriver全版本下载教程

确定自己的Chrome版本 step1. 打开Chrome浏览器右上角的三个点,再点击设置 step2. 在设置中点击“关于Chrome”,圈起来的红框即为当前Chrome版本,我的版本就是121.0.6167.185 在json中查找自己对应ChromeDriver版本下载链接 一般教程会让你…