前言
1. 容器
容器是一种轻量级的虚拟化技术,将应用程序及其依赖打包成一个标准化、可移植的运行单元,共享宿主机内核但隔离运行环境。
特点:
隔离性(文件系统、网络、进程空间)
资源限制(CPU、内存)
镜像分层(只读层 + 可写层)
2. 容器对部署架构演进的影响

3. 主流容器引擎
Docker
Docker 是最早也是最著名的容器化平台,提供了构建、打包和分发容器化应用的完整解决方案。Docker 包括了许多工具,如 Docker Engine、Docker Compose 和 Docker Swarm,用于构建、运行、管理容器化应用和集群。
Podman Podman 是一个与 Docker 类似的容器管理工具,旨在提供与 Docker 相同的命令行接口(CLI),但具有无守护进程的设计。Podman 的设计重点是安全性和无 root 权限的运行。
Containerd Containerd 是一个高性能的容器运行时,专门处理容器生命周期的管理(例如:镜像拉取、容器创建、启动、停止等)。它本身并不直接提供用户接口,通常作为其他容器工具(如 Docker 或 Kubernetes)的一部分来使用。
Docker简介
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker的优点
Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。
1、快速,一致地交付应用程序 Docker 允许开发人员将应用程序运行在标准化环境(容器)中,消除环境差异, 缩短开发周期。
容器非常适合持续集成和持续交付(CI / CD)工作流程,例如此场景:
开发人员在本地编写代码,并使用 Docker 容器与团队成员共享他们的工作。 他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。 当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。 测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。
2、响应式部署和扩展 Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。
Docker 的可移植性和轻量级的特性,可以轻松地完成动态管理的工作负担,并根据业务需求,实时扩展或移除应用程序和服务。
3、在同一硬件上运行更多工作负载 Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,可以利用更多的计算能力来实现业务目标。 Docker 非常适合于高密度环境以及中小型部署,用更少的资源做更多的事情。
一. 安装Docker
1 离线安装Docker-ce
例如 docker-24.0.0.tgz
2 解压安装包
[root@yycpyfzx-4 package]# tar -zxvf docker-24.0.0.tgz
docker/
docker/docker-proxy
docker/containerd-shim-runc-v2
docker/ctr
docker/docker
docker/docker-init
docker/runc
docker/dockerd
docker/containerd
[root@yycpyfzx-4 package]#3 将解压出来的所有文件拷贝到/usr/bin目录下
[root@yycpyfzx-4 docker]# ls
containerd containerd-shim-runc-v2 ctr docker dockerd docker-init docker-proxy runc
[root@yycpyfzx-4 docker]# cp ./* /usr/bin/4 将Docker注册为系统服务
[root@yycpyfzx-4 opt]# vi /etc/systemd/system/docker.service
...
# 文件内容为:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target5 Docker服务开机自启
[root@yycpyfzx-4 opt]# chmod +x /etc/systemd/system/docker.service
[root@yycpyfzx-4 opt]#
[root@yycpyfzx-4 opt]# systemctl daemon-reload
[root@yycpyfzx-4 opt]#
[root@yycpyfzx-4 opt]# systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /etc/systemd/system/docker.service.
[root@yycpyfzx-4 opt]#
[root@yycpyfzx-4 opt]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/etc/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: inactive (dead)
Docs: https://docs.docker.com
[root@yycpyfzx-4 opt]#
[root@yycpyfzx-4 opt]# systemctl start docker
[root@yycpyfzx-4 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES6. 修改docker默认配置
# 查看docker0虚拟网卡
[root@yycpyfzx-4 network-scripts]# docker network inspect bridge | grep Subnet
"Subnet": "172.17.0.0/16",
[root@yycpyfzx-4 network-scripts]# vi /etc/docker/daemon.json
# 修改内容如下
{
"iptables":true,
"icc":true,
"bip":"172.17.0.1/16",
"data-root": "/path/to/new/docker/data",
"registry-mirrors": [
"https://gukttz5p.mirror.aliyuncs.com",
"https://mirror.ccs.tencentyun.com",
"https://docker.1ms.run"
]
}
# 放行docker0网卡对本机ip的请求
[root@yycpyfzx-4 network-scripts]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.17.0.0/16" port port="80-13000" protocol="tcp" accept'
[root@yycpyfzx-4 network-scripts]# firewall-cmd --reload二. 安装Docker-Compose
1 关于Docker-Compose
Docker-Compose 是用于定义和运行多容器 Docker 应用程序的工具。
Docker-Compose 使用 YML 文件来配置应用程序需要的所有服务。配置完成后使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Docker-Compose 使用的三个步骤:
使用 Dockerfile 定义应用程序的环境。
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
最后,执行 docker-compose up 命令来启动并运行整个应用程序。
2 下载docker-compose二进制文件
执行uname -s和uname -m查看宿主机系统信息, 选择适合当前系统的docker-compose文件
例如下载docker-compose-linux-x86_64, 下载后将文件命名为docker-compose
保存到/usr/local/bin/docker-compose
3 为下载的二进制文件添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose4 创建软连接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose5 查看docker和docker-compose版本
[root@yycpyfzx-4 opt]# docker-compose --version
Docker Compose version v2.17.3
[root@yycpyfzx-4 opt]#
[root@yycpyfzx-4 opt]# docker --version
Docker version 24.0.0, build 98fdcd7
[root@yycpyfzx-4 opt]#