Centos7.9系统下docker安装

Docker技术原理

Docker使用Google公司推出的Go语言进行开发实现的,基于Linux内核的Cgroups,Namespace以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。最初实现是基于LXC,从Docker 0.7以后开始去除LXC,转而使用自行开发的Libcontainer,从Docker 1.11开始,则进一步演进为使用RunC和Containerd。

(1)Cgroups

Cgroups即为Control groups,其作用就是在Linux中限制某个或者某些进程的分配资源。在group中,有分配好的特定比例的CPU时间、IO时间、可用内存大小等。Cgroups是将任意进程进行分组化管理的Linux内核功能。最初由Google的工程师提出,后来被整合进Linux内核中。

(2)Namespace

命名空间(namespace)是Linux中用于分离进程树、网络接口、挂载点以及进程间通信等资源的方法。Linux主要有7种不同的命名空间,包括CLONE_NEWCGROUP、CLONE_NEWIPC、CLONE_NEWNET、CLONE_NEWNS、CLONE_NEWPID、CLONE_NEWUSER和 CLONE_NEWUTS,通过这7个选项能在创建新的进程时设置新进程应该在哪些资源上与宿主机器进行隔离。Docker就是通过Linux的Namespaces对不同的容器实现隔离的。

(3)AUFS

AUFS(Another Union File System),是一个能透明覆盖一或多个现有文件系统的层状文件系统,支持将不同目录挂载到同一个虚拟文件系统下的文件系统,可以把不同的目录联合在一起,组成一个单一的目录。这是一种虚拟的文件系统,文件系统不用格式化,直接挂载即可。Docker则一直在用AuFS作为容器的文件系统。当一个进程需要修改一个文件时,AuFS创建该文件的一个副本。AuFS可以把多层合并文件系统的单层表示。这个过程称为写入复制(copy on write)。AuFS允许Docker把某种镜像作为容器的基础。使用AuFS的另一个好处是Docker的版本容器镜像能力,每个新版本都是一个与之前版本的简单差异改动,有效地保持镜像文件最小化。

因此,基于Linux命名空间(Namespaces)、控制组(Cgroups)和AUFS三大技术才支撑了目前Docker的实现,也是Docker能够出现的最重要的原因。

Docker环境准备

:本实验所有系统均在虚拟机环境下

安装CentOS7.9系统,并配置网卡。(需要虚拟机可以ping通网络)

bash 复制代码
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="1cd204fc-e6eb-406c-adb3-65fab9c99b7e"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.75.130
PREFIX=24
GATEWAY=192.168.75.2
DNS1=114.114.114.114

配置YUM源

我这里是挂载了/dev/sr0至/opt/centos目录下,这个目录需要创建,或者将sr0挂载至/mnt目录下,再将这些文件复制到/opt/centos目录下,都是可以的。(之所以需要这一步是因为刚安装好的系统yum无法使用,所以需要进行这一步操作,使yum工具可以使用)

bash 复制代码
[root@localhost ~]# mv /etc/yum.repos.d/* /media
[root@localhost ~]# vim /etc/yum.repos.d/yum.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0

完成后可以使用yum安装一些依赖,但是由于我们所使用的这个源比较纯净,有些依赖包无法安装,所以还需要添加一个阿里云的源,来帮助我们下载一些我们安装docker之前所需的一些依赖。

bash 复制代码
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

源添加好之后我们可以安装docker的前置环境依赖包及docker仓库

bash 复制代码
yum install -y yum-utils device-mapper-persistent-data lvm2 epel-release
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker

安装指定 版本的docker

bash 复制代码
yum install -y docker-ce-19.03.9

安装完成后可以查看一下docker的版本

bash 复制代码
[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           26.1.4
 API version:       1.40 (downgraded from 1.45)
 Go version:        go1.21.11
 Git commit:        5650f9b
 Built:             Wed Jun  5 11:32:04 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          19.03.9
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       9d988398e7
  Built:            Fri May 15 00:24:05 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.33
  GitCommit:        d2d58213f83a351ca8f528a95fbd145f5654e957
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

设置开机自启动

bash 复制代码
systemctl enable docker --now
配置加速
bash 复制代码
[root@localhost ~]# mkdir -p /etc/docker
[root@localhost ~]# tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://q8xu3ub2.mirror.aliyuncs.com",
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com"
  ]
}
EOF
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
相关推荐
dust_and_stars1 小时前
APT vs Snap vs Flatpak 核心对比表
运维·服务器·数据库
未来之窗软件服务1 小时前
AI人工智能(四)本地部署vosk-ASR环境命令—东方仙盟练气期
linux·运维·人工智能·本地模型·仙盟创梦ide·东方仙盟
AIMarketing2 小时前
飞猫M505G网速技术解析峰值1.6Gbps技术原理
运维·服务器·5g
晚秋大魔王3 小时前
Trilium Note 服务器部署
运维·服务器
!chen3 小时前
Ubuntu 上 ROS2 的安装
linux·运维·ubuntu
RisunJan3 小时前
Linux命令-lvremove(删除指定LVM逻辑卷)
linux·运维·服务器
古译汉书3 小时前
串口模拟工具:com0com 介绍、下载、驱动感叹号解决
linux·运维·服务器·stm32·单片机·嵌入式硬件
Elastic 中国社区官方博客4 小时前
Agentic CI/CD:使用 Kubernetes 部署门控,结合 Elastic MCP Server
大数据·人工智能·elasticsearch·搜索引擎·ci/cd·容器·kubernetes
切糕师学AI4 小时前
Kubernetes 中的 StatefulSet
云原生·容器·kubernetes