docker安装部署学习

ops/2025/3/19 16:21:36/

docker安装部署学习

  • 什么是 Docker?
  • 如何理解 Docker?
    • 1. 容器化技术 vs. 传统虚拟机
    • 2. Docker 的核心概念
    • 3. Docker 的四大优势
  • Docker 的应用场景
  • 安装 Docker 引擎
    • 1. 卸载旧版本(确保环境干净)
    • 2. 安装依赖工具
    • 3. 添加 Docker 官方仓库
    • 4. 安装 Docker 核心组件
    • 5. 启动 Docker 服务
    • 6. 验证安装
  • 配置阿里云镜像加速器
    • 1. 注册阿里云账号(已有账号可跳过)
    • 2. 获取专属加速器地址
    • 3. 配置 Docker 镜像加速
    • 4. 验证加速器是否生效
  • Docker 镜像加速器 vs. 阿里云 yum 仓库源的区别
    • 1. 解决的问题不同
    • 2. 配置方式不同
      • (1) 阿里云 yum 仓库源
      • (2) Docker 镜像加速器
    • 3. 实际效果对比
    • 4. 为何需要同时配置?
  • Docker 基础使用示例
    • 1. 拉取镜像(以 Nginx 为例)
    • 2. 运行容器
    • 3. 查看运行中的容器
    • 4. 访问测试

什么是 Docker?

Docker 是一种开源的容器化平台,用于将应用程序及其依赖打包成轻量级、可移植的容器容器是一种标准化的软件单元,可以在任何支持 Docker 的环境中快速部署和运行,简单来说,Docker 解决了开发、测试和部署过程中 “环境不一致” 的难题


如何理解 Docker?

1. 容器化技术 vs. 传统虚拟机

  • 传统虚拟机:通过虚拟化硬件(如 VMware、VirtualBox)模拟完整的操作系统,每个虚拟机需要独立的操作系统内核、库和应用程序,缺点:资源占用大、启动慢、性能损耗高

  • Docker 容器:共享主机操作系统内核,仅打包应用程序及其依赖(如代码、运行时、系统工具),优点:轻量(MB级)、秒级启动、性能接近原生

    类比理解:

  • 虚拟机像是一栋完整的房子(包含地基、水电、家具)

  • Docker 容器像是一个标准化的集装箱(仅装所需物品,直接放在货轮上运输)


2. Docker 的核心概念

  • 镜像(Image):只读的模板,包含应用程序运行所需的一切(代码、环境、配置),例如:一个 Ubuntu 镜像 + Python 环境 + 你的代码 = 一个定制镜像
  • 容器(Container):镜像的运行实例,每个容器是隔离的沙箱环境,互不干扰,例如:用同一个镜像启动 3 个容器,每个容器运行独立的服务
  • 仓库(Registry):存储和分享镜像的平台,最常用的是 Docker Hub(类似 GitHub 的镜像托管平台)
  • Dockerfile:文本文件,定义如何构建镜像(例如安装依赖、复制文件、设置启动命令)

3. Docker 的四大优势

  • 环境一致性:“开发环境能跑,生产环境报错?” Docker 确保环境完全一致
  • 快速部署:镜像秒级启动,无需手动配置环境
  • 资源高效:多个容器共享主机资源,节省内存和 CPU
  • 隔离性:每个容器独立运行,避免依赖冲突(例如 Python 2 和 Python 3 共存)

Docker 的应用场景

  1. 开发环境搭建:无需在本地安装 MySQL、Redis,直接启动容器
  2. 持续集成(CI/CD):自动化测试和部署时,用 Docker 保证环境一致
  3. 微服务架构:每个微服务独立打包成容器,灵活扩展
  4. 快速部署开源工具:例如一键部署 WordPress、Jenkins、Elasticsearch

Docker 的核心价值是:一次构建,处处运行,它通过容器化技术将应用程序与环境解耦,解决了开发到部署的“最后一公里”问题


安装 Docker 引擎

1. 卸载旧版本(确保环境干净)

yum remove -y docker* containerd.io
rm -rf /var/lib/docker

在这里插入图片描述

2. 安装依赖工具

yum install -y yum-utils device-mapper-persistent-data lvm2

在这里插入图片描述

(我的已经是最新)

3. 添加 Docker 官方仓库

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

若出现如下输出:
在这里插入图片描述

可使用阿里云镜像源:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述

4. 安装 Docker 核心组件

yum install -y docker-ce docker-ce-cli containerd.io

在这里插入图片描述

5. 启动 Docker 服务

systemctl start docker
systemctl enable docker

在这里插入图片描述

6. 验证安装

docker --version

在这里插入图片描述


配置阿里云镜像加速器

1. 注册阿里云账号(已有账号可跳过)

访问 阿里云官网 注册账号

2. 获取专属加速器地址

  1. 登录阿里云控制台
  2. 搜索进入 容器镜像服务 → 镜像工具 → 镜像加速器
  3. 复制你的专属加速器地址(格式如 https://xxxxxx.mirror.aliyuncs.com)
    在这里插入图片描述

3. 配置 Docker 镜像加速

sudo mkdir -p /etc/docker# 写入阿里云加速器配置(替换成你的实际地址)
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
EOF# 重启 Docker 生效
sudo systemctl daemon-reload
sudo systemctl restart docker

4. 验证加速器是否生效

docker info | grep "Registry Mirrors" -A1

如果显示阿里云镜像地址,说明配置成功

Docker 镜像加速器 vs. 阿里云 yum 仓库源的区别

1. 解决的问题不同

场景阿里云 yum 仓库源Docker 镜像加速器
作用对象Docker 软件的安装包(如 docker-ce)Docker 运行时拉取的镜像(如 nginx)
核心目的加速 Docker 软件本身的下载和安装加速 Docker 镜像的下载(如 docker pull)
类比理解更换软件商店的地址(从国外搬到国内)给软件商店里的商品(镜像)添加国内 CDN

2. 配置方式不同

(1) 阿里云 yum 仓库源

  • 作用:告诉系统“从阿里云下载 Docker 安装包”
  • 操作示例:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 配置文件位置:/etc/yum.repos.d/docker-ce.repo
  • 验证:
yum list docker-ce  # 查看是否能列出阿里云的 Docker 包

(2) Docker 镜像加速器

  • 作用:告诉 Docker 引擎“从阿里云拉取镜像”
  • 操作:编辑 Docker 配置文件 /etc/docker/daemon.json

3. 实际效果对比

场景未配置阿里云 yum 仓库源未配置 Docker 镜像加速器
安装 Docker 软件从 Docker 官方源下载,速度可能慢不影响(软件安装已完成)
拉取 Docker 镜像不影响(镜像加速器已配置)从 Docker Hub 下载,速度可能慢

4. 为何需要同时配置?

  • 分阶段优化
    1. 安装阶段:用阿里云 yum 仓库源快速安装 Docker 软件
    2. 运行时阶段:用镜像加速器快速拉取 Docker 镜像
  • 互补关系:两者优化的是 Docker 不同阶段的操作

常见问题解答
Q1:只配置镜像加速器,不配置阿里云 yum 仓库源会怎样?

  • 安装 Docker 时可能从国外源下载,速度较慢,但拉取镜像时会走阿里云加速

Q2:两个配置都用阿里云,会有冲突吗?

  • 完全不会!两者是独立的配置,分别作用于不同阶段

Docker 基础使用示例

1. 拉取镜像(以 Nginx 为例)

docker pull nginx

如果出现了如下提示:
在这里插入图片描述

可能是镜像加速器设置的问题,可以换成如下:

{"registry-mirrors":["https://docker.1ms.run","https://docker.1panel.live/"]
}

再次拉取:
在这里插入图片描述

有时会出现docker pull可以正常拉取,但docker search出现异常:

Error response from daemon: Get "https://index.docker.io/v1/search?q=mysql&n=25": dial tcp 75.126.124.162:443: i/o timeout

待解决
TODO 暂未找到合适方案,后续找到后更新

2. 运行容器

# 启动一个 Nginx 容器并映射端口
docker run -d -p 8080:80 --name my-nginx nginx

在这里插入图片描述

3. 查看运行中的容器

sudo docker ps

在这里插入图片描述

4. 访问测试

浏览器访问 http://<服务器IP>:8080,看到 Nginx 欢迎页即成功
在这里插入图片描述


后面文章会继续介绍常见的docker指令用法!


http://www.ppmy.cn/ops/167059.html

相关文章

动手学深度学习:CNN和LeNet

前言 该篇文章记述从零如何实现CNN&#xff0c;以及LeNet对于之前数据集分类的提升效果。 从零实现卷积核 import torch def conv2d(X,k):h,wk.shapeYtorch.zeros((X.shape[0]-h1,X.shape[1]-w1))for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i,j](X[i:ih,j:jw…

c++--vector

1.定义vector vector的定义分为四种 (1)vector() ——————无参构造 (2)vector(size_t n,const value_type& val value_type()) ——————构造并初始化n个val (3)vector(const vector& v1) ———————拷贝构造 (4)vector(inputiterator first,inpu…

如何搭建一个安全经济适用的TRS交易平台?

TRS&#xff08;总收益互换&#xff09;一种多方参与的投资方式&#xff0c;也是绝对收益互换&#xff08;total return swap&#xff09;的一种形式。 它是一种衍生合约&#xff0c;是一种金融衍生品的合约&#xff0c;是指交易双方在协议期间将参照资产的总收益转移给信用保…

基于web的牙医预约管理系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 信息化时代&#xff0c;各行各业都以网络为基础飞速发展&#xff0c;而医疗服务行业的发展却进展缓慢&#xff0c;传统的医疗服务行业已经逐渐不满足民众的需求&#xff0c;有些还在以线下预约挂号的方式接待病人&#xff0c;为此设计一个牙医预约管理系统很有必要。此类…

Vue中的publicPath释义

publicPath 部署应用包时的基本URL。用法和 webpack 本身的 output.publicPath 一致&#xff0c;但是 Vue CLI 在一些其他地方也需要用到这个值&#xff0c;所以请始终使用 publicPath 而不要直接修改 webpack 的 output.publicPath。 默认情况下&#xff0c;Vue CLI 会假设你…

注意力机制:让AI拥有黄金七秒记忆的魔法--(注意力机制中的Q、K、V)

注意力机制&#xff1a;让AI拥有"黄金七秒记忆"的魔法–&#xff08;注意力机制中的Q、K、V&#xff09; 在注意⼒机制中&#xff0c;查询&#xff08;Query&#xff09;、键&#xff08;Key&#xff09;和值&#xff08;Value&#xff09;是三个关键部分。 ■ 查询…

高频SQL 50 题(持续更新)

SQL的编写与运用 0. 写在前面 最近学习了数据库系统概论&#xff0c;其中涉及到了关于SQL语句的编写&#xff0c;感觉理论知识不足以让我掌握相关的编写方式&#xff0c;因此选择刷力扣上的题目进行复习巩固。 时间不是很多&#xff0c;可能不会经常更新&#xff0c;有时间写…

Spring IOC(五个类注解)

controller、service、Repository、Component 、Configurationpackage com.java.ioc;import com.java.ioc.Controller.HelloController; import com.java.ioc.rep.UserRepository; import com.java.ioc.service.UserService; import org.springframework.boot.SpringApplicatio…