目录
[一 Docker简介及部署方法](#一 Docker简介及部署方法)
[1.1 Docker简介](#1.1 Docker简介)
[1.1.1 什么是docker?](#1.1.1 什么是docker?)
[1. 轻量级虚拟化](#1. 轻量级虚拟化)
[2. 一致性](#2. 一致性)
[3. 可移植性](#3. 可移植性)
[4. 高效的资源利用:](#4. 高效的资源利用:)
[5. 易于部署和扩展:](#5. 易于部署和扩展:)
[1.1.2 docker在企业中的应用场景](#1.1.2 docker在企业中的应用场景)
[1.1.3 docker与虚拟化的对比](#1.1.3 docker与虚拟化的对比)
[1.1.4 docker的优势](#1.1.4 docker的优势)
[2 部署docker](#2 部署docker)
[2.1 容器工作方法](#2.1 容器工作方法)
[2.2 部署第一个容器](#2.2 部署第一个容器)
[2.2.1 配置软件仓库](#2.2.1 配置软件仓库)
[第三部分:搜索 Docker(验证仓库)](#第三部分:搜索 Docker(验证仓库))
[第四部分:正式安装 Docker](#第四部分:正式安装 Docker)
[第五部分:修改 Docker 启动配置(关键!)](#第五部分:修改 Docker 启动配置(关键!))
[第八部分:启动 Docker 并设置开机自启](#第八部分:启动 Docker 并设置开机自启)
前言:
裸金属时代,维护时,横向拓展非常困难,重复;
2006年的虚拟化时代, 模拟硬件,安装操作系统;VMware; 里面的软件,redis,都是独立的,需要单独安装make;占用浪费; 一台主机可以部署多个操作系统, 裸金属减少,耗电量减少,低碳环保; 对于系统的依赖很严重;
企业中的能源开销。阿里一天的耗电量,服务器;是西安一周的耗电量;
容器,目录,装程序等,有的可以共用
一 Docker简介及部署方法
1.1 Docker简介
Docker之父Solomon Hykes:Docker就好比传统的货运集装箱
2008 年LXC(LinuX Contiainer)发布,但是没有行业标准,兼容性非常差
docker2013年首次发布,由Docker, Inc开发
1.1.1 什么是docker?
Docker是管理容器的引擎,为应用打包、部署平台,而非单纯的虚拟化技术
它具有以下几个重要特点和优势:
1. 轻量级虚拟化
:Docker 容器相较于传统的虚拟机更加轻量和高效,能够快速启动和停止,节省系统资源。
例如,启动一个 Docker 容器可能只需要几秒钟,而启动一个虚拟机则可能需要几分钟。
2. 一致性
:确保应用程序在不同的环境中(如开发、测试、生产)具有一致的运行表现。
无论在本地还是云端,应用的运行环境都能保持相同,减少了因环境差异导致的问题。
3. 可移植性
:可以轻松地将 Docker 容器从一个平台迁移到另一个平台,无需担心依赖和环境配置的差异。
比如,在本地开发的容器可以无缝部署到云服务器上。
4. 高效的资源利用:
多个 Docker 容器可以共享主机的操作系统内核,从而更有效地利用系统资源。
5. 易于部署和扩展:
能够快速部署新的应用实例,并且可以根据需求轻松地进行水平扩展。
总之,Docker 极大地简化了应用程序的开发、部署和管理流程,提高了开发效率和运维的便利性。它在现代软件开发和云计算领域得到了广泛的应用。
1.1.2 docker在企业中的应用场景

在企业中docker作为业务的最小载体而被广泛应用
通过docker企业可以更效率的部署应用并更节省资源
云是一种经营理念:
MS5;亚马逊;闲置的房子租出去;
阿里云就是中国云
别碰开发;
你打不了NBA你就觉得你能做开发吗
> IaaS(Infrastructure as a Service),即基础设施即服务(毛坯房)便宜
> PaaS是(Platform as a Service)即指平台即服务(装修好,没器具)
> SaaS(Software as a Service)软件运营服务是(精装修,领包入住)贵
docker: 在云业务主机上,能够快速响应并且提供服务的一个 软件的,以及软件运行环境的集合
1.1.3 docker与虚拟化的对比

安全不好,效率好
| 虚拟机 | docker容器 | |
|---|---|---|
| 操作系统 | 宿主机上运行虚拟机OS | 共享宿主机OS |
| 存储 | 镜像较大(GB | 镜像小(MB) |
| 性能 | 操作系统额外的cpu、内存消耗 | 几乎无性能损耗 |
| 移植性 | 笨重、与虚拟化技术耦合度高 | 轻量、灵活迁移 |
| 隔离性 | 完全隔离 | 安全隔离 |
| 部署 | 慢、分钟级 | 快速、秒级 |
| 运行密度 | 一般几十个 | 单机支持上千容器 |
1.1.4 docker的优势
对于开发人员:Build once、Run anywhere。
对于运维人员:Configure once、Run anything 配置
容器技术大大提升了IT人员的幸福指数!
AI 解决脏活累活,35岁精力有限的问题; 会让有技术的人走的远
2 部署docker
2.1 容器工作方法


2.2 部署第一个容器

国内:

2.2.1 配置软件仓库
首先删除之前的

以及删除快照

然后克隆一个


首先,我们要做的第一件事,就是给 Linux 系统加一个 "阿里云软件商店" 的地址,这样才能下载 Docker。大家跟着我一起敲这段代码,敲完之后按回车:
#利用阿里云部署软件仓库
[root@docker-node1 ~]# cat > /etc/yum.repos.d/docker.repo << EOF
[docker]
name = docker
baseurl = https://mirrors.aliyun.com/docker-ce/linux/rhel/9.6/x86_64/stable/
gpgcheck = 0
EOF
好,代码敲完了, 我来一行一行给大家讲清楚这段代码都在做什么:
-
首先看第一行,#利用阿里云部署软件仓库,这行是注释,以#开头的内容,系统是不会执行的,只是写给我们自己看的笔记,大家可以不用敲这行。
-
然后是[root@docker-node1 ~]#,这个部分大家也不用输入 ,这是系统自动显示的命令提示符:
- root表示当前是超级管理员账号,权限最大;
- ~表示当前在用户的家目录;
- #就表示这是管理员终端,如果是普通用户,这里通常是$。
-
接下来是第一行真正要执行的命令:
cat > /etc/yum.repos.d/docker.repo << EOF- cat:这个命令本来是用来查看文件内容的,但在这里配合后面的符号,是用来创建新文件的;
- >:这是一个重定向符号,意思是 "把前面的内容,写到后面的文件里去",如果文件不存在就新建,存在就覆盖;
- /etc/yum.repos.d/docker.repo:这是我们要创建的文件的路径和名字 :
- /etc/yum.repos.d/是 RHEL/CentOS 系统固定的目录,所有 "软件商店" 的配置文件都必须放在这里,后缀也必须是.repo;
- docker.repo是我们给这个文件起的名字;
- << EOF:这叫 "Here Document" 语法,大白话就是告诉系统:"你听着,接下来我要输入一段内容,直到我再次输入EOF为止,这段内容都算做是这个文件里的东西"。
-
然后是文件里的内容第一行:[docker]
- 这是给这个软件仓库起的唯一 ID,中括号不能丢,不然系统识别不出来。
-
下一行:name = docker
- 这是给这个仓库起一个好认的名字,方便我们自己看,叫什么都行。
-
最关键的一行来了 :
baseurl = https://mirrors.aliyun.com/docker-ce/linux/rhel/9.6/x86_64/stable/- 这就是 Docker 安装包的阿里云下载地址。
- 这里必须重点强调:很多人报错invalid link(无效链接),99% 都是因为这行地址写错了!
- 你的系统是 RHEL9.6,就写 9.6;是 9.5,就改 9.5;
- x86_64是 CPU 架构,如果你是 ARM 服务器,就改成aarch64;
- 一个字符都不能错,错了就会报无效链接!
-
下一行:gpgcheck = 0
- 这是安全校验开关,=0表示关闭校验。新手先这么写,不然没导入密钥会报错,等以后熟悉了再开。
-
最后一行:EOF
- 这就是结束标记,和开头的<< EOF对应,必须单独占一行,告诉系统:"内容写完了,保存吧"。
好,这一步完成后,我们可以输入 ls /etc/yum.repos.d/ 回车,能看到里面有 docker.repo 这个文件,就说明第一步成功了。
第二部分:刷新软件缓存
接下来,我们要刷新一下系统的 "软件商品目录",输入这行命令并回车:
[root@docker-node1 ~]# dnf makecache
我来解释一下这行命令:
- dnf:是 RHEL 8/9 系统的包管理器,相当于 App Store 的后台程序;
- makecache:就是 "生成缓存" 的意思。
- 大白话:去我们刚配置的阿里云地址,把那里的软件列表下载到本地,这样下次安装速度就快了。
大家看,执行的时候出现了这段红字:
正在更新 Subscription Management 软件仓库。
无法读取客户身份
本系统尚未在权利服务器中注册。
完全不用慌! 这是 RHEL 系统的官方付费订阅提示,就是红帽想让你花钱注册,这完全不影响我们使用阿里云的源安装 Docker,直接忽略这段红字就行。
等看到 "元数据缓存已建立",就说明这步成功了。
第三部分:搜索 Docker(验证仓库)
接下来,我们搜一下 Docker,看看我们的仓库是不是真的生效了,输入:

[root@docker-node1 ~]# dnf search docker
- search:就是搜索命令。
- 作用:在所有软件源里找名字带docker的软件。
大家看搜索结果,能找到 docker-ce.x86_64 : The open-source application container engine 这一行,就说明我们的仓库配置成功了!这个 docker-ce 就是我们要装的 Docker 社区免费版。
第四部分:正式安装 Docker
好,现在我们可以正式安装 Docker 了,就这一行命令,输入并回车:
[root@docker-node1 ~]# dnf install docker-ce -y

逐词解释:
- install:安装命令,固定写法;
- docker-ce:我们要安装的软件包名;
- -y:自动确认参数。
- 安装过程中系统会问你 "确定要安装吗?",加了 -y 就相当于自动帮你按了 y 回车,一路绿灯到底,新手必加。
接下来等待安装完成,看到 "完毕!" 或者 "已安装" 的提示,就说明 Docker 装好了。
第五部分:修改 Docker 启动配置(关键!)
很多新手装完 Docker,发现容器上不了网,就是因为漏了这一步!我们来修改 Docker 的启动参数,输入:
[root@docker-node1 ~]# vim /lib/systemd/system/docker.service

- vim:Linux 里最常用的文本编辑器;
- 后面的路径:这是 Docker 的系统服务配置文件。
新手跟着我做 vim 操作,一步都别错:
- 回车进入文件后,按键盘上的 i 键,进入 "插入模式"(也就是编辑模式);
- 用方向键移动光标,找到以 ExecStart= 开头的那一行;
- 在这一行的末尾 ,加上一个空格,然后输入:--iptables=true
- 就像这样:ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --iptables=true
- 作用:强制 Docker 使用防火墙规则,不然容器上不了网;
- 改完之后,按一下键盘上的 Esc 键,退出编辑模式;
- 然后输入 :wq (注意是冒号 wq),然后按回车,就保存并退出了。
这里有个必踩的坑! 改完配置 文件,必须输入这行命令并回车:
systemctl daemon-reload
这是告诉系统:"我改了你的服务配置,你重新加载一下",不然改的配置不生效!
第六部分:加载网络内核模块
接下来,我们要加载 Docker 必需的一个网络驱动,先输入第一行:
[root@docker-node1 ~]# echo br_netfilter > /etc/modules-load.d/docker_mod.conf
- echo br_netfilter:打印 "br_netfilter" 这串字符;
- > ...:把这串字符写入后面的文件;
- br_netfilter:这是一个内核网络驱动,Docker 需要用它来处理容器网络;
- 作用:告诉系统,"下次开机的时候,自动帮我加载这个驱动"。
然后输入第二行,现在立刻手动加载这个驱动(不用重启) :

[root@docker-node1 ~]# modprobe -a br_netfilter
- modprobe:手动加载内核模块的命令。
第七部分:调整系统网络参数(核心!)
这是让容器能上网的最核心一步,我们来修改系统的内核网络开关,输入这段代码:
修改内核参数L:
[root@docker-node1 ~]# cat > /etc/sysctl.d/docker.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
我来解释这三个开关:
- net.bridge.bridge-nf-call-iptables = 1:开启桥接网络的防火墙过滤;
- net.ipv4.ip_forward = 1:最重要的一个 !开启 IP 转发功能。
- 大白话:允许 Linux 系统像路由器一样,把容器的数据包转发到外网去。这个如果是 0,容器绝对上不了网!
文件创建好后,输入这行命令让配置立刻生效(不用重启):
[root@docker-node1 ~]# sysctl --system
- --system:从系统配置目录加载所有配置并生效。

第八部分:启动 Docker 并设置开机自启
终于到最后一步了!我们启动激活 Docker,并让它开机自启,输入:
[root@docker-node1 ~]# systemctl enable --now docker
逐词解释:
- systemctl:控制系统服务的命令;
- enable:设置为开机自启;
- --now:现在立刻 启动;
- 不加这个的话,只有下次开机才会生效,加了就是 "现在启动,并且以后开机也自动启动";
- docker:服务名。

- docker info :核心命令
- 这是 Docker 官方提供的系统信息查询命令 ,作用是:查看当前 Docker 环境的完整运行状态、配置和资源信息。
会多了桥接网卡

验证安装成功
好,全部搞定!我们来验证一下,输入:
docker --version
能输出版本号,就说明安装成功了!
你还可以输入 docker run hello-world 跑一个测试容器,看到 "Hello from Docker!",就说明网络也完全没问题了!