docker安装

一、容器与 Docker 概述

  • 容器:是一种轻量级、可移植、自包含的软件打包技术,确保应用在任何环境中运行一致。

  • Docker:是一个用于开发、交付和运行应用的开放平台,实现应用与基础设施的解耦。


二、Docker 的优势

  1. 快速交付与部署:镜像标准化,启动秒级。

  2. 高效虚拟化:内核级虚拟化,无需 Hypervisor。

  3. 轻松迁移与扩展:跨平台运行(物理机、云、虚拟机等)。

  4. 简化管理:增量更新,自动化管理。



容器的标准化

在2015年,由Google,Docker、CoreOS、IBM、微软、红帽等厂商联合发起的OCI( Open Container Initiative)组织成立了,并于2016年4月推出了第一个开放容器标准。标准主要包括runtime spec标准和image format spec标准。标准的推出,有助于替成长中市场带来稳定性,让企业能放心采用容器技术,用户在打包、部署应用程序后,可以自由选择不同的容器Runtime;同时,镜像打包、建立、认证、部署、命名也都能按照统一的规范来做。

Runtime是容器真正运行的地方,Runtime需要跟操作系统kernel紧密协作,为容器提供运行环境。目前主流的三种容器Runitme有:lxc、runc、rkt。

  • Lxc是Linux上的老牌runtime。Docker最初也是使用lxc作为runtime。
  • Runc是Docker自己开发的容器runtime,符合OCI规范,也是现在Docker的默认runtime。
  • rkt是CoreOS开发的容器runtime,符合OCI规范,因而能够运行Docker的容器。

Docker的优势

容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高。传统虚拟机方式运行10个不同的应用就要起10个虚拟机,而Docker只需要启动10个隔离的应用即可。

具体说来,Docker在如下几个方面具有较大的优势。

1、更快速的交付和部署

开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker容器很轻很快,容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。

2、更高效的虚拟化

Docker容器的运行不需要额外的hypervisor支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。

3、更轻松的迁移和扩展

Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。

4、更简单的管理

使用Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

三、Docker 架构与核心组件

  1. Docker 客户端 :如 docker 命令或 REST API。

  2. Docker 守护进程(Docker daemon):负责构建、运行和分发容器。

  3. Docker 镜像:只读模板,用于创建容器。

  4. Docker 容器:镜像的运行实例。

  5. Registry:镜像仓库(公有如 Docker Hub,私有如自建仓库)。


四、Docker 安装步骤(CentOS 7)

安装环境

  • 管理工具:docker-ce最新版本。
  • Runtime:使用docker默认支持的runc。
  • 操作系统:Centos7,目前在国内Centos用的较多。
  1. 关闭防火墙与 SELinux

    bash 复制代码
    systemctl stop firewalld
    systemctl disable firewalld
    # 编辑 /etc/selinux/config,设置 SELINUX=disabled
    reboot
  2. 更换 yum 源为阿里源

    bash 复制代码
    yum install -y wget
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    yum -y install epel-release
  3. 添加 Docker 源并安装 Docker CE

    bash 复制代码
    wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
    yum clean all
    yum install -y docker-ce
  4. 启动 Docker 并验证

    bash 复制代码
    systemctl restart docker
    systemctl enable docker
    docker --version
  5. 配置镜像加速器(如阿里云、中科大等)

    • 编辑 /etc/docker/daemon.json,添加镜像地址。
    • 重启 Docker:systemctl daemon-reload && systemctl restart docker
    shell 复制代码
    {
    "registry-mirrors": [ "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn"
    ]
    }

五、总结要点

  • 容器提供一致性的运行环境,具备强可移植性。
  • Docker 实现应用与环境的隔离,提升开发与运维效率。
shell 复制代码
{
"registry-mirrors": [ "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn"
]
}

五、总结要点

  • 容器提供一致性的运行环境,具备强可移植性。
  • Docker 实现应用与环境的隔离,提升开发与运维效率。
  • 容器与虚拟机的本质区别:容器共享宿主机内核,虚拟机独立虚拟化环境
相关推荐
仙柒4152 小时前
kubernetes 控制器 Dockerfile
运维·容器·kubernetes
万里侯10 小时前
Kubernetes Operator模式:自动化运维的高级实践
微服务·容器·k8s
热金鼠10 小时前
Ubuntu 22.04 Docker 完整使用手册(1)
docker
热金鼠10 小时前
Ubuntu 22.04 Docker 完整使用手册(2)
docker
天才测试猿13 小时前
Jenkins+Docker自动化测试全攻略
自动化测试·软件测试·python·测试工具·docker·jenkins·测试用例
JAVA学习通14 小时前
《大营销平台系统设计实现》 - 营销服务 第8节:抽奖规则树模型结构设计
运维·决策树·docker·容器·责任链模式
liux352817 小时前
K8s 排坑 02:Pod 一直 CrashLoopBackOff 怎么办?
云原生·容器·kubernetes
liux352818 小时前
K8s 排坑 01:Pod 一直 Pending 怎么办?
云原生·容器·kubernetes
万里侯19 小时前
Kubernetes多租户管理:实现资源隔离与安全的完整指南
微服务·容器·k8s
无相孤君20 小时前
我用 Docker + JunimoServer 搭了一个星露谷物语无头服,还顺手做了个本地管理面板
linux·游戏·docker·开源