参考视频地址: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