安装docker
- 一、概念
-
- [1.1 docker是什么?](#1.1 docker是什么?)
- [1.2 什么是容器?](#1.2 什么是容器?)
- [1.3 docker与虚拟机的区别](#1.3 docker与虚拟机的区别)
- [1.4 容器,镜像,仓库](#1.4 容器,镜像,仓库)
- [1.5 微服务、云计算](#1.5 微服务、云计算)
- [二、Rocky (使用 dnf 或 yum 安装)](#二、Rocky (使用 dnf 或 yum 安装))
-
- 第1步:卸载以前安装过的docker相关的软件
- [第2步: 配置安装docker的源,默认使用官方的源,在安装的时候出错,下载不下来软件,建议使用阿里云的源](#第2步: 配置安装docker的源,默认使用官方的源,在安装的时候出错,下载不下来软件,建议使用阿里云的源)
- [第3步: 安装docker](#第3步: 安装docker)
- [第4步: 启动docker](#第4步: 启动docker)
- 第5步:查看dockerd进程,确认docker服务已经启动了
- [三、docker 基本使用](#三、docker 基本使用)
-
- [3.1 配置国内源](#3.1 配置国内源)
- [3.2 下载nginx镜像](#3.2 下载nginx镜像)
- [3.3 查看本机已经下载的镜像](#3.3 查看本机已经下载的镜像)
- [3.4 启动一个nginx的容器](#3.4 启动一个nginx的容器)
- [3.5 查看启动的容器](#3.5 查看启动的容器)
- [3.6 镜像导入/导出](#3.6 镜像导入/导出)
- [3.7 删除镜像](#3.7 删除镜像)
- [二、Ubuntu(使用 apt-get 进行安装)](#二、Ubuntu(使用 apt-get 进行安装))
- [三、CentOS (使用 yum 进行安装)](#三、CentOS (使用 yum 进行安装))
一、概念
1.1 docker是什么?
就是一个软件,跑容器的软件 -> 容器化软件
有什么作用,解决了什么问题?
- 将任何软件都可以放到容器里去运行
- 更加节约企业的服务器资源,降低基础设施成本
- 软件的快速部署和缩放 --》改变了软件部署和安装的方式
1.2 什么是容器?
类似软件的集装箱
官方网站:https://www.docker.com/resources/what-container/
使用容器的好处:
1.成本低廉
2.管理方便
颗粒度更加小的虚拟化技术--》容器技术--》可以控制资源
很多企业里的物理机的资源使用率比较低,一个业务一群机器,导致大量的资源浪费,成本过高
docker技术可以控制资源的使用率,可以让物理机很饱和的运行 --》减少机器的数量,同时业务也能正常的运行
使用docker可以降低基础设施成本
1.3 docker与虚拟机的区别

特性 | 容器化(Docker) | 虚拟机(Hypervisor) |
---|---|---|
隔离层级 | 进程级隔离(共享宿主 OS 内核) | 硬件级隔离(每个 VM 有独立 OS 内核) |
隔离策略 | Hypervisor | CGroups |
资源占用 | 极轻量(MB 级,仅需应用自身资源) | 重量级(GB 级,需承载完整 OS 资源) |
启动速度 | 秒级(直接启动应用进程) | 分钟级(需启动完整 OS) |
多应用支持 | 同一宿主 OS 下可运行多个不同应用容器 | 每个 VM 通常运行一个主要应用(因 OS 资源占用高) |
兼容性 | 依赖宿主 OS 内核(如 Linux 容器难跑 Windows 应用) | 支持任意 OS(只要 Hypervisor 兼容) |
镜像存储 | KB-MB | GB-TB |
集群规模 | 上万 | 上百 |
高可用策略 | 弹性、负载、动态 | 备份、容灾、迁移 |
1.4 容器,镜像,仓库
- 镜像: image 是软件单元,本质上是一个
文件
,文件里面有应用程序代码(nginx、mysql等)、微型操作系统、依赖软件 --》需要运行软件 - 仓库: repository 存放镜像的地方, hub.docker.com
hub.docker.com 是docker官方提供的镜像的集市。 全球最大的镜像集散地 - 镜像仓库: 国内的站点 --》网站,提供镜像下载功能
- 容器: container 运行的镜像,本质上是一个
进程
,提供服务
1.5 微服务、云计算
微小的服务:尽量的将某个功能或者服务独立出来,跑在单独的容器里,且可独立开发、测试、部署和扩展
微服务的核心特征
- 单一职责:每个服务只负责一个业务模块
- 独立部署:修改一个服务时,无需重新部署整个应用
- 技术多样性:不同服务可选择适合自身的技术栈
- 弹性扩展:可针对高负载服务单独扩容
微服务架构虽然解决了单体应用的耦合问题,但也带来了部署复杂、环境不一致、资源管理难等挑战 ------ 而 Docker 恰好能针对性解决这些问题
微服务面临的挑战 | Docker 的解决方案 | 核心价值 |
---|---|---|
环境不一致("开发能跑,生产报错") | 容器打包应用 + 依赖,确保所有环境镜像一致 | 消除 "环境差异",降低部署故障 |
服务部署复杂(需手动配置依赖、端口) | 通过 Dockerfile 自动化构建镜像,Compose 一键部署多服务 | 标准化部署流程,提升效率 |
资源隔离差(多服务共享主机资源,易冲突) | 容器间资源隔离(CPU、内存、网络),互不干扰 | 避免 "服务抢占资源",提升系统稳定性 |
服务扩容慢(需手动搭建新主机环境) | 容器轻量(启动秒级),可快速复制镜像启动新容器 | 支持 "秒级扩容",应对流量峰值 |
版本管理难(多服务版本迭代,回滚复杂) | 镜像版本化,回滚时只需切换镜像版本 | 简化版本管理,降低回滚风险 |
云计算(Cloud Computing)
物理机--》虚拟化--》云计算--》云服务--》容器--》云原生
云原生: 就是与容器、k8s、Prometheus、etcd相关的技术
云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供
给计算机各种终端和其他设备
云计算利用强大的分布式计算和存储能力,将数据和应用程序从本地计算机或服务器转移到云中,使得用户可以随时随地获取
所需的信息和服务
-
公有云: 阿里云、腾讯云、华为云、AWS(亚马逊)、google云、微软云azure、电信云
买服务器
-
私有云/专有云: 自己使用不与其他人分享的云平台 --》购买阿里云/腾讯云、华为云的云平台软件,自己的服务器
国家电网、财通证券
政府、国企
-
混合云: 公有云、私有云
12306 购买火车票
服务模式 | 英文全称 | 核心定义 | 用户视角 | 典型场景 |
---|---|---|---|---|
IaaS | Infrastructure as a Service(基础设施即服务) |
提供最底层的 IT 基础设施:虚拟服务器(ECS)、存储(OSS)、网络(VPC)等,用户需自行部署操作系统、数据库、应用程序 | 租用一台虚拟电脑,自己装系统和软件 | 企业搭建自有服务器集群、开发测试环境 |
PaaS | Platform as a Service(平台即服务) |
提供 "应用开发 / 运行平台":包含操作系统、数据库、中间件(如 Tomcat)、开发工具等,用户只需上传应用代码即可运行 | 租用一个已装好环境的开发平台,直接写代码 | 快速开发 Web 应用、移动 APP 后端、大数据分析(如使用 Hadoop 平台) |
SaaS | Software as a Service(软件即服务) |
提供 "开箱即用的软件应用":用户无需安装,直接通过浏览器或客户端使用(如在线 Office、CRM 系统),所有维护由服务商负责 | 直接用在线软件,不用管背后的技术 | 企业办公(钉钉、企业微信)、在线协作(飞书文档)、客户管理(Salesforce) |
Serverless | 1.FaaS(Function as a Service,函数即服务) 2.BaaS(Backend as a Service,后端即服务) | 开发者无需管理服务器,只需编写业务逻辑代码,按实际执行消耗付费 | 直接使用别人的容器平台,云厂商按照使用时长和算力来收费,企业不需要购买服务器了 | 适合流量波动大、执行时间短、事件驱动型的业务场景 |
函数计算(Function Compute)是一个事件驱动的全托管 Serverless 计算服务,您无需管理服务器等基础设施,只需编写代码并上传,函数计算会为您准备好计算资源,并以弹性、可靠的方式运行您的代码
二、Rocky (使用 dnf 或 yum 安装)
参考Centos的官方文档:https://docs.docker.com/engine/install/centos/
第1步:卸载以前安装过的docker相关的软件
bash
[root@localhost ~]#sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
第2步: 配置安装docker的源,默认使用官方的源,在安装的时候出错,下载不下来软件,建议使用阿里云的源
bash
# 两条命令等同,yum 是 dnf 的软链接,执行 yum install yum-utils 本质也是安装 dnf 兼容的扩展工具
[root@localhost ~]# sudo yum install -y yum-utils
[root@localhost ~]# sudo dnf -y install dnf-plugins-core
[root@localhost ~]# sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[root@localhost ~]# sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第3步: 安装docker
docker-ce
是docker引擎,提供docker服务的docker-ce-cli
提供docker客户端命令的containerd.io
是提供容器运行时管理的docker-buildx-plugin
是docker的一个插件,用来构建镜像docker-compose-plugin
docker的单机里的容器编排工具,可以同时启动很多容器
bash
[root@localhost ~]# sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
第4步: 启动docker
bash
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
第5步:查看dockerd进程,确认docker服务已经启动了
bash
[root@localhost yum.repos.d]# ps aux|grep docker
root 17423 0.3 2.1 1908364 80208 ? Ssl 11:42 0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root 17661 0.0 0.0 6408 2176 pts/0 S+ 11:42 0:00 grep --color=auto docker
# 查看版本
[root@docker ~]# docker --version
Docker version 28.4.0, build d8eb465
三、docker 基本使用
3.1 配置国内源
在使用 Docker 时,默认是访问docker官方提供的镜像下载的网站,配置合适的镜像源可以显著提升镜像拉取速度,尤其是在国内网络环境下
bash
[root@localhost ~]# mkdir -p /etc/docker/
# 添加2个国内的源
[root@localhost docker]# sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.xuanyuan.me","https://docker.1panel.live"]
}
EOF
{
"registry-mirrors": ["https://docker.xuanyuan.me","https://docker.1panel.live"]
}
[root@localhost docker]# sudo systemctl daemon-reload
[root@localhost docker]# sudo systemctl restart docker
3.2 下载nginx镜像
docker pull
不接版本号,默认下载最新的
bash
[root@localhost docker]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
b1badc6e5066: Pull complete
a2da0c0f2353: Pull complete
e5d9bb0b85cc: Pull complete
14a859b5ba24: Pull complete
716cdf61af59: Pull complete
14e422fd20a0: Pull complete
c3741b707ce6: Pull complete
Digest: sha256:33e0bbc7ca9ecf108140af6288c7c9d1ecc77548cbfd3952fd8466a75edefe57
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
3.3 查看本机已经下载的镜像
docker images
bash
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ad5708199ec7 3 weeks ago 192MB
3.4 启动一个nginx的容器
--》启动nginx程序
docker run
--name
sc-nginx-1:指定容器名称为 sc-nginx-1(方便后续管理)-p 8080:80
:端口映射,将宿主机的 8080 端口映射到容器内的 80 端口-d
:后台运行容器( detached 模式)nginx
:使用的镜像名称(默认拉取 latest 标签版本)
bash
[root@localhost docker]# docker run --name sc-nginx-1 -p 8080:80 -d nginx
12af7441bf2e0fdefb41445aca7f4ec4a6284acfb24c89f70672689002895dff
3.5 查看启动的容器
docker ps
bash
[root@localhost docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
12af7441bf2e nginx "/docker-entrypoint...." 29 seconds ago Up 29 seconds 0.0.0.0:8080->80/tcp, [::]:8080->80/tcp sc-nginx-1
浏览器访问宿主机的8080端口可正常显示nginx的首页
3.6 镜像导入/导出
导出
root@localhost images\]# `docker save -o` nginx.tar nginx
导入
root@localhost images\]# `docker load -i` nginx.tar nginx
3.7 删除镜像
root@localhost docker\]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ad5708199ec7 3 weeks ago 192MB \[root@localhost \~\]# `docker rmi` nginx
二、Ubuntu(使用 apt-get 进行安装)
官方文档:https://docs.docker.com/engine/install/ubuntu/
https://developer.aliyun.com/mirror/docker-ce
root@huang:~# cat /etc/issue
Ubuntu 24.04.2 LTS \n \l
之前装了的版本要移除
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
step 1: 安装必要的一些系统工具
bash
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
step 2: 信任 Docker 的 GPG 公钥
bash
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
step 3: 写入软件源信息
bash
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
step 4: 安装Docker
bash
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
三、CentOS (使用 yum 进行安装)
step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils
step 2: 添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
step 3: 安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
step 4: 开启Docker服务
sudo service docker start