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
相关推荐
蓝胖的四次元口袋19 分钟前
MySQL主从复制与Redis哨兵高可用集群实战
运维·主从复制·哨兵模式
蓝速科技1 小时前
国产化信创终端等保合规核心防护与落地方案丨蓝速科技
大数据·运维·数据库·人工智能·科技
pt10432 小时前
Cisco Splunk for AI Operations:AIOps企业实践
运维·人工智能·自动化
江屿风2 小时前
【Linux系统】【Linux进程终止等待详解与程序替换机制初体验】流食般投喂
linux·运维·笔记·系统架构·centos·unix
java_logo2 小时前
Docker 部署填鸭表单完整教程:搭建私有化问卷与表单收集平台
docker·表单·问卷·tduck·轩辕镜像·填鸭表单·tduck platform
玉&心3 小时前
K8s HPA自动扩缩容
docker·云原生·容器·hpa·kubernates
2601_949499943 小时前
工业 POF 器件国产化新思路:芯瑞科技DT‑2532Z 解决安华高 HFBR‑2532Z 供应链卡点
运维·网络·人工智能·科技·光模块
小小ken3 小时前
docker容器(数据)备份及恢复:使用docker-volume-backup项目
docker·容器
fanxiaohui121383 小时前
2026符合上飞机标准的充电宝推荐南孚传应,质量稳定又安全
运维·服务器·人工智能·科技
国际云,接待3 小时前
云服务器跨厂商迁移怎么尽量不停机:用 rsync、MySQL binlog 和 DNS TTL 做双阶段切换
运维·服务器·mysql