Docker零基础入门

参考课程https://www.bilibili.com/video/BV1VC4y177re/?vd_source=b15169a302bee35f484245aecc69d4dd

参考书籍Docker 实践 - 面向 AI 开发人员的 Docker 实践 (dockerpractice.readthedocs.io)

1. 什么是Docker

1.1. Docker起源

随着计算机的发展,计算机上已经可以运行多个操作系统,每个系统上可以跑不同的应用,实现不同的功能。由此,虚拟机诞生,可以让我们在一个系统上跑多个系统。

 虽然可以独立产生多个系统,但对系统性能有极大消耗,会消耗很多硬件资源。

那么如何让硬件资源不被OS消耗掉呢?

答:使用容器技术

Docker就是其中一种容器技术,目前比较流行。 

1.2. Docker可以用来干什么

没有用OS,所以体积很小

当开发把项目交给测试的时候,直接交三个容器,测试就不用再配置一遍环境了

Docker Image  即 Docker 镜像,是一个特殊的文件系统,它包含了运行一个特定软件所需的所有内容,包括代码、运行时环境、库、配置文件等。可以将其理解为软件的一个 “快照”,它提供了一种可重复、可移植的方式来打包和分发软件。

Image是什么?  包含了你容器里面所需要运行的所有信息都在Image里面

Image可以干嘛?  可以利用Image来产生一个或无数个Container(容器),也就是说,当你希望在你的系统上运行一个Container的时候,我得在系统上指明我要运行哪个Image的Container以及基于哪个Image给我生成一个Container。Image和Container的关系类似于类和对象,用Image去产生一个又一个的Container去跑起来。

所以我们要做的就是把Image给准备好,之后可以直接用Image去跑一个Container。

Image放在哪里?  可以把Image放在DockerHub/Public Docker Register(公共的Docker注册表)或Private Docker Register里面,需要的时候可以把Image取出来生成Container。

总结:以后我做一个项目,写一个Image,把它存储在仓库中,需要时可以从任意一台连网的电脑中取出生成Container,运行项目。

1.3. 一些预备知识

 Nginx 是一款轻量级的高性能 Web 服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器

Web 服务器是一种专门用于存储、处理和向客户端(通常是 Web 浏览器)提供 Web 内容的软件或硬件设备。

1.4. 一些预备工作 

  1. 打开“Docker Desktop”
  2. 通过代理访问外部资源(翻墙) 

2. Docker的安装

Linux 是一个开源的操作系统内核

Ubuntu 是基于 Linux 内核开发的操作系统发行版。它采用了 Linux 内核,并在其基础上添加了各种软件包、图形界面、工具和应用程序,以提供一个完整的操作系统环境。

例如 Ubuntu、Fedora、CentOS 等都是常见的 Linux 操作系统发行版。这些发行版在 Linux 内核的基础上,添加了不同的软件和功能,以满足不同用户的需求。

我使用的是Windows系统,所以下载了

Docker Desktop 发行说明 |Docker 文档

WSL(Windows Subsystem for Linux)是适用于 Windows 的 Linux 子系统。

安装后遇到了“Docker Desktop - WSL update failed An error occurred while updating WSL. You can manually update using wsl --update.”的报错,解决方法是打开cmd,进行以下操作

C:\Users\Winky>wsl --update
正在安装: 适用于 Linux 的 Windows 子系统
已安装 适用于 Linux 的 Windows 子系统。

成功安装

3. 基础命令

3.1. 拉取镜像

docker pull [选项] [docker镜像地址:标签]

3.1.1. 拉取 “hello-world” 镜像 

“hello-world” 镜像主要是用于验证 Docker 安装是否正确以及展示 Docker 的基本工作流程。它的功能非常简单,就是输出一段欢迎信息。

C:\Users\吴伊晴>docker pull hello-world:latest
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:53cc4d415d839c98be39331c948609b659ed725170ad2ca8eb36951288f81b75
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latestWhat's next:View a summary of image vulnerabilities and recommendations → docker scout quickview hello-world:latest

3.1.2. 拉取 “nginx” 镜像 

“nginx” 镜像则是一个功能强大的 Web 服务器。当运行 “nginx” 镜像时,它会启动一个 Nginx 服务器实例,并进行一系列的配置和初始化操作,以准备处理传入的 HTTP 请求。

C:\Users\吴伊晴>docker pull nginx:latest
latest: Pulling from library/nginx
Digest: sha256:447a8665cc1dab95b1ca778e162215839ccbb9189104c79d7ec3a81e14577add
Status: Image is up to date for nginx:latest
docker.io/library/nginx:latest

3.2. 运行镜像/启动容器

“docker run” 这个命令实际上包含了两个主要的动作:

首先,它会根据指定的镜像创建一个新的容器;

然后,它会启动这个容器。

3.2.1. 运行“hello-world” 镜像 

“hello-world”:输出的内容主要是一段欢迎信息和对 Docker 工作流程的简要说明,旨在向用户表明 Docker 安装正常,并提供一些进一步探索的建议和链接。

docker run hello-world:latest
C:\Users\吴伊晴>docker run hello-world:latestHello 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/

3.2.2. 运行 “nginx” 镜像  

“nginx”:输出的内容主要是 Nginx 服务器的启动日志,包括服务器的版本、构建信息、操作系统信息、使用的事件方法以及启动的 worker 进程信息等。这些信息对于调试和监控 Nginx 服务器的运行状态非常有用。

不指定版本

如果不指定版本,则默认是最新版本

docker run nginx
C:\Users\吴伊晴>docker run nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
e4fff0779e6d: Pull complete
2a0cb278fd9f: Pull complete
7045d6c32ae2: Pull complete
03de31afb035: Pull complete
0f17be8dcff2: Pull complete
14b7e5e8f394: Pull complete
23fa5a7b99a6: Pull complete
Digest: sha256:447a8665cc1dab95b1ca778e162215839ccbb9189104c79d7ec3a81e14577add
Status: Downlo

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CAN通讯常见错误纠正

CAN通讯常见错误 1.在使用CAN设备进行数据通讯时,有时候参数配置不当可能就会导致通讯的失败,如下图1所示,出现通信错误的原因是两个设备的波特率配置不一致导致。 图1 2.有时候在配置参数的时候,不能只关注波特率速度配置一致就…

Script-server: 一款开源的脚本管理工具,为你的Python脚本提供一个直观的 Web UI

在日常工作中,我们经常会使用各种脚本来自动化任务,提升效率。但传统的脚本管理方式往往伴随着一些困扰:复杂的命令行操作、难以理解的脚本参数、缺乏直观的反馈等等。这些问题,让原本应该便捷的脚本管理变得繁琐。 Script-server…

太速科技-基于XC7Z100+AD9361的双收双发无线电射频板卡

基于XC7Z100AD9361的双收双发无线电射频板卡 一、板卡概述 基于XC7Z100AD9361的双收双发无线电射频板卡是基于Xilinx ZYNQ FPGA和ADI的无线收发芯片AD9361开发的专用功能板卡,用于4G小基站,无线图传,数据收发等领域。 二、板卡…

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期]

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期] 第三期介绍:频道模块之频道成员 目录 QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期]第三期介绍:频道模块之频道成员获取子频道在线成员数获取频道成员列表获取频道身份组成员列…

Java项目: 基于SpringBoot+mybatis+maven课程答疑系统(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven课程答疑系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、…

102.WEB渗透测试-信息收集-FOFA语法(2)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:101.WEB渗透测试-信息收集-FOFA语法(1) FOFA使用实例 • title&q…

资深盘点:国内外知名的ERP管理系统厂商有哪些?

已经考虑引入ERP系统却担心面临以下问题?ERP系统流程僵化难以调整?流程与实际业务脱节?培训不到位、技术支持不及时导致难以实现全员使用、共创?市面上的ERP系统众多不知道如何选择? 今天就根据2024最新市场动态&…

ISAC: Toward Dual-Functional Wireless Networks for 6G and Beyond【论文阅读笔记】

此系列是本人阅读论文过程中的简单笔记,比较随意且具有严重的偏向性(偏向自己研究方向和感兴趣的),随缘分享,共同进步~ Integrated Sensing and Communications: Toward Dual-Functional Wireless Networks for 6G and…

react crash course 2024 (1)理论概念

state的作用 react hooks 而无需写一个class jsx 样式用 spa

决策树算法上篇

决策树概述 决策树是属于有监督机器学习的一种,起源非常早,符合直觉并且非常直观,模仿人类做决策的过程,早期人工智能模型中有很多应用,现在更多的是使用基于决策树的一些集成学习的算法。 示例一: 上表根据…

怎样在备忘录中添加提醒?怎么设置备忘录提醒

备忘录作为我们日常生活中常用的软件,其记录事项的便捷性已经得到了广泛认可。无论是工作计划、购物清单还是个人日记,备忘录都能帮助我们将这些信息快速记录下来。然而,如果备忘录能够进一步提供提醒功能,那么它将变得更加实用&a…

Facebook的虚拟现实功能简介:社交网络的新前沿

在科技飞速发展的今天,虚拟现实(VR)已经从科幻小说中的梦想变成了触手可及的现实。作为全球领先的社交平台,Facebook(现已更名为Meta)正大力推动虚拟现实技术的发展,以重新定义用户的社交体验。…

C++ | Leetcode C++题解之第394题字符串解码

题目&#xff1a; 题解&#xff1a; class Solution { public:string src; size_t ptr;int getDigits() {int ret 0;while (ptr < src.size() && isdigit(src[ptr])) {ret ret * 10 src[ptr] - 0;}return ret;}string getString() {if (ptr src.size() || src[…

Nacos下载和启动

Nacos是什么&#xff1f; 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台 下载 https://github.com/alibaba/nacos/releases/tag/2.1.1启动 将下载好的Nacos解压缩&#xff0c;然后到bin目录下打开cmd 输入指令&#xff1a;startup.cmd -m standalone 出…

工业大模型市场图谱:53个工业大模型全面梳理

工业场景要求严谨、容错率低&#xff0c;核心业务场景对模型准确率的要求达到95%以上、对幻觉的容忍率为0&#xff0c;因此通用基础大模型的工业知识往往不足以满足工业场景的应用需求。 根据沙丘智库发布的《2024年中国工业大模型应用跟踪报告》&#xff0c;工业大模型是指在…

supabase链接vecs文档

使用Supabase链接本地数据库 Vecs 如何使用本地数据库工作。确保机器上安装了Supabase CLI。 # Initialize your project supabase init# Start Postgres supabase startSupabase vecs同步数据 vecs官方文档 创建集合 import vecs #下面这一行是本地的postgre数据库连接 #…

Nginx快速使用

如果本系列文章对您有帮助&#xff0c;可以 star 一下我的 limou-learn-note&#xff0c;求求惹(๑&#xff1e; &#xff1c;)☆♡~ 叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff…

37拼购:电商新风尚,共享双赢的购物革命

随着2024年电商市场的日益繁荣&#xff0c;商品海洋中的同质化问题愈发严峻&#xff0c;消费者在茫茫商海中寻觅独特价值的难度陡增。在此背景下&#xff0c;一种名为“37悦享拼”的创新电商模式横空出世&#xff0c;它巧妙融合了私域社交与电商精髓&#xff0c;旨在打破传统壁…

YOLOv8+Deepsort+PyQt+GUI 语义分割+目标检测+姿态识别 三者合一(集成于一套系统)综合视觉分析系统

综合视觉分析系统 技术栈&#xff1a; YOLOv8&#xff1a;用于目标检测&#xff0c;是一个快速且准确的目标检测框架。DeepSORT&#xff1a;用于目标跟踪&#xff0c;结合了深度学习特征提取和卡尔曼滤波器来预测目标轨迹。GUI&#xff1a;提供一个直观易用的图形用户界面&am…

随着Batch size增加,最佳learning rate如何选择?

最近读到《Surge Phenomenon in Optimal Learning Rate and Batch Size Scaling》这篇论文&#xff0c;里面通过实验和理论证明了learning rate和batch size之间的关系&#xff0c;觉得很有意思&#xff0c;就简答写个blog记录下。 1. 简介 在影响模型训练效果的所有参数中&a…