当前位置: 首页 > news >正文

docker概念、安装与基本使用

安装docker

  • 一、概念
    • 1.1 docker是什么?
    • 1.2 什么是容器?
    • 1.3 docker与虚拟机的区别
    • 1.4 容器,镜像,仓库
    • 1.5 微服务、云计算
  • 二、Rocky (使用 dnf 或 yum 安装)
    • 第1步:卸载以前安装过的docker相关的软件
    • 第2步: 配置安装docker的源,默认使用官方的源,在安装的时候出错,下载不下来软件,建议使用阿里云的源
    • 第3步: 安装docker
    • 第4步: 启动docker
    • 第5步:查看dockerd进程,确认docker服务已经启动了
  • 三、docker 基本使用
    • 3.1 配置国内源
    • 3.2 下载nginx镜像
    • 3.3 查看本机已经下载的镜像
    • 3.4 启动一个nginx的容器
    • 3.5 查看启动的容器
    • 3.6 镜像导入/导出
    • 3.7 删除镜像
  • 二、Ubuntu(使用 apt-get 进行安装)
  • 三、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 内核)
隔离策略HypervisorCGroups
资源占用极轻量(MB 级,仅需应用自身资源)重量级(GB 级,需承载完整 OS 资源)
启动速度秒级(直接启动应用进程)分钟级(需启动完整 OS)
多应用支持同一宿主 OS 下可运行多个不同应用容器每个 VM 通常运行一个主要应用(因 OS 资源占用高)
兼容性依赖宿主 OS 内核(如 Linux 容器难跑 Windows 应用)支持任意 OS(只要 Hypervisor 兼容)
镜像存储KB-MBGB-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 购买火车票

服务模式英文全称核心定义用户视角典型场景
IaaSInfrastructure as a Service(基础设施即服务)提供最底层的 IT 基础设施:虚拟服务器(ECS)、存储(OSS)、网络(VPC)等,用户需自行部署操作系统、数据库、应用程序租用一台虚拟电脑,自己装系统和软件企业搭建自有服务器集群、开发测试环境
PaaSPlatform as a Service(平台即服务)提供 “应用开发 / 运行平台”:包含操作系统、数据库、中间件(如 Tomcat)、开发工具等,用户只需上传应用代码即可运行租用一个已装好环境的开发平台,直接写代码快速开发 Web 应用、移动 APP 后端、大数据分析(如使用 Hadoop 平台)
SaaSSoftware as a Service(软件即服务)提供 “开箱即用的软件应用”:用户无需安装,直接通过浏览器或客户端使用(如在线 Office、CRM 系统),所有维护由服务商负责直接用在线软件,不用管背后的技术企业办公(钉钉、企业微信)、在线协作(飞书文档)、客户管理(Salesforce)
Serverless1.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相关的软件

[root@localhost ~]#sudo dnf remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

第2步: 配置安装docker的源,默认使用官方的源,在安装的时候出错,下载不下来软件,建议使用阿里云的源

# 两条命令等同,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的单机里的容器编排工具,可以同时启动很多容器
[root@localhost ~]# sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin  -y

第4步: 启动docker

[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服务已经启动了

[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官方提供的镜像下载的网站,配置合适的镜像源可以显著提升镜像拉取速度,尤其是在国内网络环境下

[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
不接版本号,默认下载最新的

[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

[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 标签版本)
[root@localhost docker]# docker run --name sc-nginx-1  -p 8080:80  -d  nginx
12af7441bf2e0fdefb41445aca7f4ec4a6284acfb24c89f70672689002895dff

3.5 查看启动的容器

docker ps

[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: 安装必要的一些系统工具

sudo apt-get updatesudo apt-get install ca-certificates curl gnupg

step 2: 信任 Docker 的 GPG 公钥

sudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgsudo chmod a+r /etc/apt/keyrings/docker.gpg

step 3: 写入软件源信息

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

sudo apt-get updatesudo 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

http://www.dtcms.com/a/399467.html

相关文章:

  • 文件操作的相关知识
  • 网站建设不足之处网站seo案例
  • 卖网站赚钱吗做国外网站翻译中国小说赚钱
  • python爬虫--requests模块
  • kernel4.19 rk3568 buildroot perf 编译踩坑记录
  • Springboot实现WebSocket通信(一)
  • wordpress站点标题360免费自助建站
  • 网站开发前端设计二维码创意设计
  • 太原网站建设随州steam交易链接怎么改
  • 网站风格设计怎么写织梦搞笑图片网站源码
  • 网站建设 中企动力板材生态板跨境电商平台建设方案
  • STM32 单片机 - ADC
  • STM32_08_中断(☆☆☆)
  • 网站建设合优wordpress首页添加视频
  • todesk开启虚拟屏后被控黑屏
  • 学校网站建设的申请书推广100种方式
  • 瑞芯微RK3506核心板/开发板DSM音频开发实战,关键知识点与实操案例必看攻略!
  • 网站建设项目明细表网站建设讠金手指科杰
  • 美文的手机网站代理服务器地址怎么找
  • 自动化单mysql多实例库的全量迁移脚本
  • Lucene 8.7.0 版本中doc、tim、tip、tmd文件详解
  • golang1.18升级到1.23遇到的坑
  • 网站建设广告费 科目高埗网站仿做
  • 52Hz——FreeRTOS学习笔记——FReeRTOS移植遇到的问题
  • 网站建设肆金手指排名7全网通网站
  • AI赋能互联网广告变现的商业模式
  • 52Hz——FreeRTOS学习笔记——删除任务
  • AI 重塑教育生态:从个性化学习到公平鸿沟
  • 将二级域名 网站目录网站首页排名下降
  • 实现Word文档自动编号提取技术详解