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

05-14 阅读 0评论

【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】Windows11操作系统下安装、使用Docker保姆级教程

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下载

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


      二、启动Microsoft Hyper-V

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

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

      • 勾选Hype-V功能

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

        • 并勾选如下内容:

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


          三、安装Docker

          在Windows上安装Docker桌面版

          • 双击程序,如下:

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


            • 点击OK,确定安装WSL

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

              • 等待安装完毕!

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


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

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


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

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


                    • 默认勾选,点击Finish即可完成

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

                    • 等待启动Docker引擎

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

                      • 报错如下:

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

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

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

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

                          • 报错如下:点击restart重启即可。

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

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

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


                            四、玩转Docker

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

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

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

                              五、运行Hello-world

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

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

                                • 查看是否拉取成功?

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

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

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

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

                                    至此拉取Hello-world成功!


                                    六、配置阿里云镜像加速

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

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

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

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


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

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


                                          • 添加如下:

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

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

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


                                            七、容器常用命令

                                            查看版本

                                            docker --version
                                            

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


                                            获取镜像

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

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


                                            查看镜像

                                            docker images
                                            

                                            查看所有镜像源:

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


                                            删除镜像

                                            docker rmi xx.image
                                            

                                            删除镜像如下:

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


                                            启动容器

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

                                            docker run -it mysql /bin/bash
                                            

                                            进入容器,容器内部也是一个Linux,Linux命令通用 ,输入exit容器停止运行。

                                            也可以如下:

                                            docker run -it --rm --entrypoint /bin/bash 镜像名
                                            

                                            命令解读

                                            -it:允许与容器的标准输入进行交互,并分配一个伪终端。

                                            --rm:容器退出后自动删除。(要想不删除可以去掉这一部分)

                                            --entrypoint /bin/bash:设置容器的入口点为 /bin/bash,这样当容器启动时会直接进入交互式的 bash shell。

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

                                            docker run -itd mysql /bin/bash
                                            

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

                                            参数说明:

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

                                              要退出终端,直接输入 exit

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


                                              • 指定配置信息运行容器

                                                运行容器,一般是指定容器内的端口和容器的名字(不能与之前的名字重复)

                                                --expose:编辑容器内的端口

                                                --name:编辑容器的名字

                                                最后的my-golang-app 为镜像源

                                                docker run --expose 3888/tcp --name mycontainer-15 my-golang-app 
                                                

                                                交互容器

                                                根据上面的启动容器命令,可以进行容器的交互。

                                                其实进入到容器的内部,还是一个Linux的世界,Linux的命令是在容器内部通用的。

                                                docker run -it --rm --entrypoint /bin/bash 镜像名
                                                
                                                • 如下:这样就进入到容器内部的bash shell , 先用一下ls命令。

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

                                                • 再进入到其中的一个目录,查看文件也OK

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

                                                  • 最后退出,输入exit即可。

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


                                                    删除容器

                                                    docker rm -f 容器ID
                                                    

                                                    运行结果如下:

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


                                                    批量删除

                                                    docker rm -f 容器ID1 容器ID2 容器ID……
                                                    

                                                    运行结果如下:

                                                    [root@localhost docker]# docker rm -f 31094a8a38df d6e155d5c175 a49250b3790b 87a94ee8c07f ffd24d4aaeca b2b6aeaa9073 ca4c7c1ff87c ccce1fb65649 07efbc1eb5ad
                                                    31094a8a38df
                                                    d6e155d5c175
                                                    a49250b3790b
                                                    87a94ee8c07f
                                                    ffd24d4aaeca
                                                    b2b6aeaa9073
                                                    ca4c7c1ff87c
                                                    ccce1fb65649
                                                    07efbc1eb5ad
                                                    [root@localhost docker]# docker ps
                                                    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
                                                    

                                                    查看容器

                                                    常用命令如下:

                                                    docker ps -a
                                                    

                                                    运行结果如下:

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

                                                    docker ps -q
                                                    

                                                    运行结果如下:

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

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

                                                    参数说明:

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

                                                      查看容器大小,按照文件大小排序

                                                      docker ps -s --format '{{.ID}}\t{{.Names}}\t{{.Size}}' | sort -k 3 -h
                                                      

                                                      暂停容器

                                                      docker pause 容器ID 
                                                      

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

                                                      暂停容器的运行,但是容器并没有停止。


                                                      docker unpause 容器ID 
                                                      

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

                                                      恢复容器的暂停。


                                                      停止容器

                                                      docker stop 容器ID
                                                      

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

                                                      使用此命令会停止容器的运行,如果想不停止运行,可以使用暂停的命令。


                                                      补充: Linux(等价于容器内交互)查看文件大小命令:

                                                      stat 文件查看单个文件大小

                                                      du -h 查看所有文件大小

                                                      du -ah | sort -rh 查看所有文件大小并按大小排序

                                                      du -ah | sort -rh | head -n 100 查看所有文件大小并按大小排序,只取前100个文件。

                                                      重启容器

                                                      docker restart 容器ID
                                                      

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

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

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


                                                      进入容器

                                                      • 先查看容器的名字

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

                                                      • 再使用如下命令进入容器

                                                        PS: 此命令是对于已经正在运行(UP)的容器,对于运行失败的可以使用上面的启动容器命令进入内部。

                                                        docker exec -it 容器的名字 /bin/bash
                                                        

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

                                                        这里进入容器实际上是后台启动的,即使exit退出程序后也不会关闭程序。

                                                        • 退出程序后,还是Up的状态。

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


                                                          更新容器

                                                          docker update命令用于更新一个正在运行的容器的配置。

                                                          它允许你修改容器的资源限制、重启策略和其他配置选项。

                                                          以下是命令的基本用法:

                                                          docker update 容器ID/名字
                                                          

                                                          例如:

                                                          #开机自启动应用
                                                          docker update 容器id/名字 --restart=always
                                                          

                                                          查看端口开放情况

                                                          netstat -nlpt
                                                          

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


                                                          查看端口占用情况

                                                          查看所有
                                                          ps aux 
                                                          

                                                          运行结果如下:

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

                                                          查看指定服务

                                                          如查看指定的docker

                                                          ps aux | grep docker
                                                          

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


                                                          查看端口映射

                                                          使用如下命令查找容器内部映射到宿主机的端口号:

                                                          docker port 容器ID
                                                          

                                                          查找进程号(PID)

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

                                                          • 先查找容器ID
                                                            docker ps -a
                                                            

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

                                                            • 传入容器ID查找PID

                                                              方式二如下:

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

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

                                                              inspect命令可以看到容器的很多详细信息,后面会单独考虑出一期。

                                                              查看详细信息的小伙伴可以重点关注这个命令。

                                                              方式三如下:

                                                              docker container top  容器ID
                                                              

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

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


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

                                                               ps aux | grep 容器ID
                                                              

                                                              运行结果如下:

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

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

                                                                在Windows中无法通过PID来启停一个容器。

                                                                只能通过docker命令控制容器的ID来启停容器。

                                                                但是,linux可以使用sudo命令kill掉容器的pid从而控制容器的停止。

                                                                如下,容器被关闭,处于not running状态。

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


                                                                获取容器内部正在运行的任务的占用内存资源情况

                                                                docker stats --no-stream 
                                                                

                                                                输出结果如下:

                                                                CONTAINER ID   NAME    CPU %     MEM USAGE / LIMIT    MEM %   NET I/O     BLOCK I/O   PIDS
                                                                f3a135ef76e3   mycontainer  0.12%     6.16MiB / 1.952GiB   0.31%     456B / 0B   14.9MB / 0B   2
                                                                

                                                                看到这里的小伙伴,恭喜你又掌握了一个技能👊

                                                                希望大家能取得胜利,坚持就是胜利💪

                                                                我是寸铁!我们下期再见💕

                                                                往期好文💕

                                                                保姆级教程

                                                                【保姆级教程】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稳定的有序遍历的方式


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]