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:latest

What'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:latest

Hello 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 the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share 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

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

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

相关文章

C++ | Leetcode C++题解之第406题根据身高重建队列

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {sort(people.begin(), people.end(), [](const vector<int>& u, const vector<int>& v) …

第108集《大佛顶首楞严经》

请打开讲义241面。我们讲到嗅报&#xff0c;鼻根当中嗅的功能。 本根发相 发明二相&#xff1a;一者通闻&#xff0c;被诸恶气&#xff0c;熏极心扰。二者塞闻&#xff0c;气掩不通&#xff0c;闷绝于地。 以鼻根造业到无间地狱以后&#xff0c;他有二种受苦的相状&#xf…

[C++] 剖析多态的原理及实现

文章目录 多态的概念及定义编译时多态&#xff08;静态多态&#xff09;运行时多态&#xff08;动态多态&#xff09;动态多态的原理示例&#xff1a;运行时多态 两种多态的区别 多态的实现基本条件虚函数虚函数的重写与覆盖虚函数重写的其他问题协变析构函数的重写 C11 中的 o…

引领智能家居新风尚,WTN6040F门铃解决方案——让家的呼唤更动听

在追求高效与便捷的智能家居时代&#xff0c;每一个细节都承载着我们对美好生活的向往。WTN6040F&#xff0c;作为一款专为现代家庭设计的低成本、高性能门铃解决方案&#xff0c;正以其独特的魅力&#xff0c;悄然改变着我们的居家生活体验。 芯片功能特点&#xff1a; 1.2.4…

直流电源纹波怎么测量?示波器的探头和带宽如何选择?

对于电源工程师来说&#xff0c;精确测量电源纹波是一项基本技能。本文将详细介绍直流电源纹波测试时的注意事项&#xff0c;包括示波器探头的选择、带宽设置、时基选择&#xff0c;确保精准测量直流电源纹波。 一、选择合适的示波器带宽 为了避免电路的高频噪声影响电源纹波的…

基于树莓派ubuntu20.04的ros-noetic小车

目录 一、小车的架构 1.1 总体的概述 1.2 驱动系统 1.3 控制系统 二、驱动系统开发 2.1 PC端Ubuntu20.04安装 2.2 树莓派Ubuntu20.04安装 2.3 PC端虚拟机设置静态IP 2.4 树莓派设置静态IP 2.5 树莓派启动ssh进行远程开发 2.5 arduino ide 开发环境搭建 2.5.1 PC…

C++: 二叉树进阶面试题

做每件事之前都心存诚意, 就会事半功倍. 目录 前言1. 根据二叉树创建字符串2. 二叉树的层序遍历Ⅰ3. 二叉树的层序遍历Ⅱ4. 二叉树的最近公共祖先5. 二叉搜索树与双向链表6. 根据一棵树的前序遍历与中序遍历构造二叉树7. 根据一棵树的中序遍历与后序遍历构造二叉树8. 二叉树的…

【数据结构】8——图3,十字链表,邻接多重表

数据结构8——图3&#xff0c;十字链表&#xff0c;邻接多重表 文章目录 数据结构8——图3&#xff0c;十字链表&#xff0c;邻接多重表前言一、十字链表结构例子 复杂例子 二、邻接多重表&#xff08;Adjacency Multilist&#xff09;例子 前言 除了之前的邻接矩阵和邻接表 …

在k8s中,客户端访问服务的链路流程,ingress--->service--->deployment--->pod--->container

图片来源&#xff1a;自己画的 ingress是一个API资源。 客户端访问ingress的不同url ingress给客户端返回不同的服务。 就和nginx反向代理服务器一样。 根据不同的url&#xff0c;给客户端返回不同的服务。 -----------------------------------------------------------…

MySql基础-单表操作

1. MYSQL概述 1.1 数据模型 关系型数据库 关系型数据库(RDBMS)&#xff1a;建立在关系模型基础上&#xff0c;由多张相互连接的二维表组成的数据库。 特点&#xff1a; 使用表存储数据&#xff0c;格式统一&#xff0c;便于维护 使用SQL语言操作&#xff0c;标准统一&…

班迪录屏和这三款录屏工具,一键操作,太方便了!

嘿&#xff0c;小伙伴们&#xff01;今天我要跟大家分享几款超棒的录屏工具&#xff0c;它们绝对是我们在工作和学习中不可或缺的好帮&#xff1b;这些工具功能强大且操作简单&#xff0c;下面就让我来详细介绍一下它们的使用体验和好用之处吧&#xff01; 班迪录屏工具使用体…

医学数据分析实训 项目二 数据预处理作业

文章目录 项目二 数据预处理一、实践目的二、实践平台三、实践内容任务一&#xff1a;合并数据集任务二&#xff1a;独热编码任务三&#xff1a;数据预处理任务四&#xff1a;针对“项目一 医学数据采集”中“3. 通过 UCI 机器学习库下载数据集”任务所下载的数据集进行预处理。…

新能源汽车BMS 学习笔记篇—AFE 菊花链通信中电容隔离 电感隔离的使用

在汽车高压BMS系统中&#xff0c;通常采用 CAN 总线或菊花链&#xff08;&#xff08;Daisy Chain&#xff09;架构。菊花链架构通过串行连接每个节点&#xff0c;通常只需要两条信号线穿过所有节点。相比之下&#xff0c;CAN总线通常需要多个并行连接到总线上&#xff0c;布线…

一些写leetcode的笔记

标准库中的string类没有实现像C#和Java中string类的split函数&#xff0c;所以想要分割字符串的时候需要我们自己手动实现。但是有了stringstream类就可以很容易的实现&#xff0c;stringstream默认遇到空格、tab、回车换行会停止字节流输出。 #include <sstream> #incl…

沉浸式体验Stability AI最新超强AI图片生成模型Ultra

2024年9月4日&#xff0c;亚马逊云科技在Amazon Bedrock上新了Stability AI最新的的三款文本图像生成模型&#xff1a;他们分别是Stable Image Ultra、Stable Diffusion 3 Large 和 Stable Image Core。全新的模型在处理多主题提示词、图像质量和图片排版上较上一代模型有显著提…

美团图床设置教程

大厂图床&#xff0c;CDN加速 项目地址&#xff1a;https://github.com/woniu336/mt-img 使用方法 在mt.php填上你的token即可&#xff0c;然后打开index.html上传图片 获取token方法 注册https://czz.meituan.com/发布视频&#xff0c;上传封面&#xff0c;注意在上传封面后…

jenkins流水线+k8s部署springcloud微服务架构项目

文章目录 1.k8s安装2.jenkins安装3.k8s重要知识1.简介2.核心概念3.重要命令1.查看集群消息2.命名空间3.资源创建/更新4.资源查看5.描述某个资源的详细信息6.资源编辑7.资源删除8.资源重启9.查看资源日志10.资源标签 4.k8s控制台1.登录2.界面基本操作1.选择命名空间2.查看命名空…

CCS6 软件及仿真器驱动安装

1 CCS6 软件获取 TI 的官网上下载: http://www.ti.com/tools-software/ccs.html 注意 首先 win32 是 CCS 安装包支持 64 位系统,我们电脑也是 64 位系统也是安装的 win32 的安装包,另外 TI 只提供 win32 的安装包,无 win64 的安装包。 2 CCS6 软件安装 CCS如果获取提供的…

第十二周:机器学习笔记

第十二周周报 摘要Abstract机器学习1. Recurrent Neural Network&#xff08;下&#xff09;1.1 RNN的Loss Function怎么求&#xff1f;1.2 RNN奇怪的特性1.3 如何解决 RNN 梯度消失或者爆炸1.4 RNN 其他应用 Pytorch学习1. 现有的网络模型使用以及其修改1.1 在VGG16模型添加Mo…

docker部署bind9

一、部署 ## docker 部署bind9# docker run -d --name bind9 --restartalways --publish 53:53/tcp --publish 53:53/udp --publish 10000:10000/tcp --volume /data/docker/dns-server:/data --env ROOT_PASSWORDroot dhub.kubesre.xyz/sameersbn/bind:9.16.1-20200524# 建数…