Docker学习相关视频笔记(一)

参考视频地址:40分钟的Docker实战攻略,一期视频精通Docker

1、Docker与虚拟机的区别

Docker是目前最成熟高效的软件部署技术。Docker简单来说就是用容器化技术,给应用程序封装独立的运行环境,每个运行环境就是一个容器。运行容器的计算机被称为宿主机

Docker容器与虚拟机的最大区别是,++Docker容器之间共用一个操作系统内核,而每个虚拟机都包含一个操作系统的完整内核,所以Docker容器比虚拟机更轻,更小。启动速度更快。++

2、相关概念

2.1 镜像与容器

docker另外一个重要概念是镜像。++镜像是容器的模板++。

  • 类比1:镜像类比成软件安装包。而容器是安装出来的软件。
  • 类比2:镜像与容器的关系就像是用模具做糕点。docker镜像就像是模具。而容器就像是糕点,我们可以使用一个模具做出很多个糕点。当然我们也可以把模具分享给其他人。
  • 类比3:镜像是类,容器是对象。

2.2 Docker镜像仓库

docker仓库就是用来存放分享镜像的地方。每个人都可以把自己的镜像上传到仓库里面。然后其他人就可以下载镜像,并且使用。docker的官方仓库就是docker hub。上面存储了许多人分享的docker镜像。

以上就是docker最核心的基础概念。接下来我们进入实战环节

3、Docker安装

docker通常来说是基于LINUX容器化技术。windows和Mac电脑上都是虚拟了一个LINUX子系统来运行docker。所以docker最好的实战环境就是用LINUX系统的宿主机。弄一台LINUX主机并不麻烦。

3.1 Linux系统安装Docker

我们先看在LINUX系统上安装docker。我们使用我在上海的一台乌邦图系统的云服务器来安装docker。

来到这个地址:https://get.docker.com。这里有一个安装步骤。我们只需要把第一步第四步执行一下。

这里把第一步的命令复制出来。粘贴进服务器回车,第四步的命令复制出来,粘贴进服务器回车,注意这里的**sudo指的是super user do,也就是使用用管理员权限来执行这个命令。**如果您的LINUX用户不是root用户。比如像我这样是乌邦图用户。就需要在所有的docker命令前面都加一个sudo。最后点击回车。等待个十几秒就完成了安装。



3.2 windows系统安装Docker

接下来我们看在windows系统上安装docker。在任务栏搜索功能。点击启用或关闭windows功能。

然后把virtual machine platform勾选上。有的电脑可能翻译叫做虚拟机平台。

接下来把"适用于LINUX的windows子系统"的功能勾选上。也就是WSL。

接下来按照提示重新启动电脑。

电脑重启以后。我们开始安装WSL。这里要输入两个命令。首先在搜索栏中搜索CMD。右键以管理员身份打开命令提示符。我们先输入第一个命令:

powershell 复制代码
wsl --set-default-version 2

就是把WSL的默认版本设成2。这里执行第二个命令,安装一下WSL

powershell 复制代码
wsl --update --web-download

如果您的机器处于国内网络的话。我建议在后面加上--web-download。可以减少因为网络问题导致的下载失败。进度条走完WS就安装成功了。

我们来到这个地址。把docker desktop下载一下。根据自己的CPU架构选择对应的安装包。一般windows都是AMD64的CPU。

安装过程非常简单。一路点击下一步就行了.如果想自己指定安装目录.。可以使用命令行的方式。那就是这一行命令最后加一个参数。可以指定它的安装位置。

start /w "" "Docker Desktop Installer.exe" install --installation-dir=E:\Docker

我们在windows上面使用docker。注意要把这个软件一直开着。我们打开一个windows终端来测试一下。

输入

powershell 复制代码
docker --version

这里能够打印一个版本号就安装成功了

虽然docker desktop提供了一个可视化的界面。但是本期视频我们主要还是是用命令行来讲解。因为命令行在各个操作系统上是一致的。它的通用性更强。

4、Docker命令

4.1 docker pull

我们来介绍几个最重要的docker命令。docker pull命令用来从仓库下载镜像

4.1.1 例1

我们看到一个镜像有四部分的内容。

备注
docker.io registry:仓库地址/注册表 docker.io表示这是docker hub的官方仓仓库。官方仓库可以省略仓库地址
library namespace:命名空间(作者名) 因为docker hub是公共仓库。每个人都可以上传自己的镜像。如果每个人上传的镜像都叫同一个名字。比如都叫Nginx,这样肯定会乱套。所以docker要求上传镜像的时候。要在镜像前面加上作者的名字。也就是命名空间。library是docker官方仓库的命名空间。这个空间下面的所有镜像都是由官方管理的。如果一个镜像属于是官方的命名空间。那这部分可以省略不写
latest tag:docker镜像的标签名(版本号) 最后冒号后面latest这部分是docker镜像的标签名。也就是版本号。docker镜像作为一个软件。当然是有版本号的。我们可以指定下载一个特定的版本。比如:1.28.0.当然也可以写作:latest。或者干脆不写,表示获取最新版本的镜像。
nginx 镜像的名字

简化后的命令是这样的

表示从docker官方仓库的官方命名空间里面下载最新版的nginx docker镜像。

4.1.2 例2

我们再来看一个例子。这个是使用docker铺下载一个开源的AI工作流工具n8n。

我们看到前面这一部分,表示这个镜像是从n8n的一个私有仓库下载的。中间这一部分是命名空间。也就是作者的名字。最后镜像的名字叫做n8n.

4.1.3 认识一下这个网站Docker hub

我们来认识一下这个网站Docker hub(https://hub.docker.com/)。这个网站是docker的官方仓库。

我们想要什么样的镜像。只需要过来搜索一下。比如我搜索nginx

这里就列出了所有跟Nginx相关的镜像。我们看到这里写了docker official images,这个就是由官方维护的镜像

这一个镜像下面有非常多的版本号。下面还有详细的使用说明。阅读这个文档可以帮助我们更好地使用镜像。

docker hub网站不需要登录就可以使用。如果因为网络问题打不开,也可以使用这个镜像站(https://docker.fxxk.dedyn.io)来搜索镜像。它们的功能是一样的

我们来看两个英文单词。docker.io这部分我们叫它registry。也就是仓库地址或者注册表。
Registry+命名空间+镜像的名字组合起来是一个repository。也就是镜像库。

一个镜像库存放的是同一个镜像的不同版本。比如docker hub这整一个网站就是一个registry,而对应的Nginx是一个repository,它存储了同一个镜像的不同的版本

4.1.4 实践操作

回到我在上海的云服务器,输入这个命令

powershell 复制代码
docker pull nginx

回车,看到这里报了一个permission deny的错误。这种错误就是命令行前面没有加sudo。

我们在命令行前面加上sudo,重新试一下。在国内的网络环境执行这个命令。可能会因为网络问题报错。

4.1.5 设置镜像站

我们可以通过修改配置文件的方式。设置镜像站来解决这个问题。视频作者之前在github上面写过一个配置镜像站的文档。

这里我们先执行这个命令:

powershell 复制代码
sudo vi /etc/docker/daemon.json

修改一下配置文件,把这一段复制出来粘贴进去,点击ESC,输入:WQ!,回车。

修改完配置文件以后。我们还需要这个命令

powershell 复制代码
sudo service docker restart

来重启一下docker,回车。镜像站配置好以后,我们再使用docker pull命令,这样就不会报错了。成功的把镜像下载了下来。

接下来我们在mac或者windows电脑上配置镜像站,解决网络问题。我们打开docker desktop,找到设置,打开"docker engine"

这里把配置文件的registry-mirrors复制一下,

在这里打一个逗号,然后把这一段粘贴过来,点击右下角的apply and restart

然后打开一个windows的命令行窗口:

powershell 复制代码
docker pull nginx

可以成功的拉取到镜像。

4.2 docker images 和 docker rmi

我们再来看两个跟docker镜像有关的命令,首先是docker images ,image就是镜像的英文,这个命令可以列出所有下载过的docker镜像,

下一个命令是docker rmi ,rm这里代表remove,也就是删除,I是images的缩写,这样连起来就是删除镜像 ,接下来我们可以填写一个镜像的名字,或者填写一个id,这里我填写id再回车,这样就把服务器上的Nginx的镜像删除了.

再执行docker images,就看不到那个镜像了。

docker pull 还有一个选项,

powershell 复制代码
docker pull --platform=XXXXX  nginx

表示拉取特定CPU架构的镜像,docker镜像作为一个软件,在不同的CPU架构下面都有不同的版本,默认情况下,docker铺命令会自动选择,最适合当前宿主机的CPU架构的镜像,大部分情况下我们不太需要关注镜像的CPU架构,

不过有些个别情况,比如我们用香橙派这种迷你主机运行docker,香橙派作为一个低功率的小主机,它的CPU架构一般都是arm64,如果我们想在香橙派上运行docker程序,我们就需要提前去docker hub上,确认一下镜像的架构,

我们来到docker hub的官网,我现在想确认的是这个镜像,reg flow的架构情况,reg flow是一个AI大模型知识库的应用,第一个下载量最高的镜像,

我们点击text,看到reg flow只提供AMD64位架构的镜像,也就是说reg flow在香橙派上是不能运行的,

Mac电脑虽然也都是arm64架构的,但是Mac电脑有个好处,docker desktop会自动使用QEUM来模拟X86 64指令集,从而可以兼容部分AMD64的镜像,不过代价就是可能会存在一些兼容性问题,或者带来额外的性能开销。

参考视频地址:40分钟的Docker实战攻略,一期视频精通Docker

相关推荐
范纹杉想快点毕业9 分钟前
Zynq SOC FPGA嵌入式裸机设计和开发教程自学笔记:硬件编程原理、基于SDK库函数编程、软件固化
网络·笔记·stm32·单片机·嵌入式硬件·tcp/ip·fpga开发
Yu_Lijing15 分钟前
MySQL进阶学习与初阶复习第二天
数据库·c++·学习·mysql
超浪的晨42 分钟前
Java 代理机制详解:从静态代理到动态代理,彻底掌握代理模式的原理与实战
java·开发语言·后端·学习·代理模式·个人开发
red_redemption1 小时前
自由学习记录(74)
学习
Warren981 小时前
Java Collections工具类
java·开发语言·笔记·python·学习·oracle·硬件工程
cici158742 小时前
Docker搭建Hadoop集群
hadoop·docker·eureka
典孝赢麻崩乐急2 小时前
Java学习-------外观模式
java·学习·外观模式
旧时光巷3 小时前
SQL基础⑫ | 视图篇
数据库·sql·学习·mysql·oracle·视图
五行缺弦3 小时前
Java 笔记 serialVersionUID
java·开发语言·笔记
小醉你真好3 小时前
7、Docker 常用命令大全
docker·容器·eureka