docker概念、安装与基本使用

安装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 安装))
  • [三、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

相关推荐
fie88893 小时前
在Kubernetes(k8s)环境中无法删除持久卷(PV)和持久卷声明(PVC)的解决方案
云原生·容器·kubernetes
失因3 小时前
LVS 负载均衡技术
运维·负载均衡·lvs
sszdzq3 小时前
docker安装canal-server(v.1.1.8)【mysql->rabbitMQ】
运维·docker·容器
IT成长日记3 小时前
【LVS入门宝典】LVS核心原理与实战:Director(负载均衡器)配置指南
linux·运维·负载均衡·lvs·nat·dr·tun
维尔切4 小时前
lVS 负载均衡技术
运维·负载均衡·lvs
友莘居士4 小时前
Docker Compose从入门到实战:配置与命令全指南
docker·docker-compose
神秘人X7074 小时前
LVS 负载均衡
运维·负载均衡·lvs
九河云4 小时前
华为云 ELB:智慧负载均衡,让您的应用永葆流畅体验
运维·服务器·科技·华为云·负载均衡
Clownseven5 小时前
宝塔面板搭建RustDesk教程:告别命令行,一键拥有私有远程桌面
docker·腾讯云