Docker

Docker概述

Docker‌是一个开源的应用容器引擎,它允许开发者将应用及其依赖打包到一个可移植的容器中,这些容器可以在任何流行的LinuxWindows操作系统上运行。Docker通过容器化技术,实现了应用的高效部署、隔离运行和快速启动‌。

Docker的基本概念

  1. 容器(Container)‌:Docker容器是运行在Docker上的应用,每个容器都是独立的,相互之间不会互相干扰。容器内部运行着一个或一组应用,并且共享宿主机的内核,没有自己的内核,因此启动速度快、资源利用率高‌23。
  2. 镜像(Image)‌:Docker镜像是一个模板,用于创建容器。一个镜像可以创建多个容器,镜像包含了运行应用所需的所有依赖和配置‌。
  3. Docker Daemon‌:Docker守护进程,负责管理容器的生命周期,如启动、停止、删除等操作‌。
  4. 客户端(Client)‌:用户通过Docker客户端与Docker守护进程交互,执行各种命令,如下载镜像、创建容器等‌23。
  5. 仓库(Registry)‌:存储Docker镜像的地方,可以是公开的(如Docker Hub)或私有的‌。

Docker的核心技术

Docker使用LXC(Linux Container)技术实现操作系统级别的虚拟化。LXC是一种轻量级的虚拟化技术,通过Linux内核的功能(如cgroupsnamespaces)来隔离和分配资源,使得每个容器都有独立的运行环境,但共享宿主机的内核‌。

Docker的优势

  1. 快速部署‌:Docker容器启动迅速,可以在几秒钟内完成部署,适合快速迭代和测试。
  2. 环境一致性‌:确保开发、测试和生产环境的一致性,减少因环境差异导致的错误。
  3. 资源隔离‌:每个容器运行在独立的沙箱环境中,互不干扰,提高了系统的稳定性和安全性。
  4. 高效资源利用‌:Docker可以在一台物理机上运行多个容器,充分利用硬件资源。
  5. 便携性‌:容器可以在任何支持Docker的机器上运行,便于迁移和维护‌。

docker VS 虚拟机

架构差异

Docker:容器化技术

Docker 是一种基于操作系统级虚拟化的技术。它通过将应用及其所有依赖(如库、配置文件、工具等)打包到一个容器中,使得应用在任何地方都能一致地运行。容器共享宿主操作系统的内核,但每个容器在用户空间中运行自己的进程,具有文件系统隔离。

  • 隔离级别: 容器与宿主操作系统共享内核,使用不同的进程和文件系统进行隔离。
  • 资源占用: 容器启动速度极快,通常只需要几秒钟,占用的资源比虚拟机少得多。
  • 跨平台: 由于容器的轻量特性,它能在不同的环境中快速部署,保证一致性。

虚拟机:硬件虚拟化

虚拟机则通过硬件虚拟化将物理机器分割成多个虚拟环境,每个虚拟机都包括完整的操作系统(OS)。虚拟机通过 hypervisor(虚拟机监控程序)在物理主机上模拟出虚拟硬件,并为每个虚拟机提供自己的内核。

  • 隔离级别: 虚拟机是完全隔离的,每个虚拟机都有自己的操作系统内核,不共享宿主操作系统的内核。
  • 资源占用: 虚拟机通常比容器消耗更多的资源,因为每个虚拟机都包含自己的操作系统。启动时间也更长,通常需要几分钟。
  • 跨平台: 虚拟机能够在不同的硬件平台之间迁移,但需要较高的资源支持。

性能对比

由于 Docker 容器直接共享宿主操作系统的内核,它们比虚拟机具有更高的性能。容器的启动时间非常快,可以在几秒钟内完成,而虚拟机的启动通常需要几分钟。容器的资源开销也较低,这使得同一台物理主机可以运行更多的容器,而虚拟机的资源占用则较为高效且需要更多的系统资源。

启动速度:
  • Docker: 由于容器不需要启动完整的操作系统,启动速度极快,通常在几秒钟内就能启动。
  • 虚拟机: 由于需要加载整个操作系统,虚拟机的启动时间较长,一般需要几分钟。
资源占用:
  • Docker: 容器共享宿主操作系统内核,因此资源利用率较高,能够在同一台机器上运行更多的实例。
  • 虚拟机: 每个虚拟机都需要独立的操作系统和内核,因此资源消耗较大,通常只能在有限的硬件资源下运行少数几个虚拟机。

应用场景

Docker 的适用场景

Docker 非常适合需要快速、灵活部署、管理和扩展的应用,尤其是微服务架构、CI/CD 流程中的应用,或者需要跨不同环境(如开发、测试、生产)一致性的场景。它的快速启动时间和低资源消耗使其成为容器化开发、自动化部署以及跨平台应用的一流选择。

  • 微服务架构: Docker 是微服务架构的理想选择,因为每个微服务可以运行在独立的容器中,易于管理和扩展。
  • CI/CD: Docker 能够在不同环境中快速构建、测试和部署应用,方便与持续集成、持续部署(CI/CD)管道集成。
虚拟机的适用场景

虚拟机适合那些需要完整操作系统隔离、运行多种不同操作系统,或需要高度隔离的场景。它适用于一些企业级应用、遗留系统的部署或虚拟桌面基础设施(VDI)等。

  • 多操作系统环境: 如果需要运行多个不同操作系统的环境,虚拟机可以提供完整的操作系统模拟,容器则不适用。
  • 遗留应用: 某些老旧应用可能无法直接在容器中运行,此时虚拟机能够提供一个兼容的环境。

Docker安装卸载

在线安装脚本

国内服务器
#!/bin/bash
# 移除掉旧的版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

# 删除所有旧的数据
sudo rm -rf /var/lib/docker

#  安装依赖包
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

# 添加源,使用了阿里云镜像
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 配置缓存
sudo yum makecache

# 安装最新稳定版本的docker
sudo yum install -y docker-ce

# 配置镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["http://hub-mirror.c.163.com",
      "https://docker.hpcloud.cloud",
    "https://docker.m.daocloud.io",
    "https://docker.unsee.tech",
    "https://docker.1panel.live",
    "http://mirrors.ustc.edu.cn",
    "https://docker.chenby.cn",
    "http://mirror.azure.cn",
    "https://dockerpull.org",
    "https://dockerhub.icu",
    "https://hub.rat.dev"]
}
EOF

# 启动docker引擎并设置开机启动
sudo systemctl start docker
sudo systemctl enable docker
国外服务器
#!/bin/bash
# 移除掉旧的版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

# 删除所有旧的数据
sudo rm -rf /var/lib/docker

#  安装依赖包
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

# 添加源
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# 配置缓存
sudo yum makecache 

# 安装最新稳定版本的docker
sudo yum install -y docker-ce

# 启动docker引擎并设置开机启动
sudo systemctl start docker
sudo systemctl enable docker

离线安装

#离线下载docker-ce rpm安装包
wget https://download.docker.com/linux/centos/7/x8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dekangzou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值