Docker安装
###1. 加载源和bridge
yum install -y epel-release
yum install -y bridge-utils
bridge-utils包中的brctl命令用于在Linux系统中管理以太网桥,包括创建、维护和检查网桥配置。网桥是一种在数据链路层工作的设备,能够将多个局域网(LAN)连接起来,并根据MAC地址转发帧,起到隔离碰撞和隔离网络段的作用
###2. modprobe br_netfilter 经过网桥的流量,必须被防火墙处理
执行如下命令:
modprobe br_netfilter
echo 'br_netfilter' >> /etc/modules-load.d/bridge.conf
echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf
echo 'net.bridge.bridge-nf-call-ip6tables=1' >> /etc/sysctl.conf
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p
###3. docker-ce yum 源
sudo dnf config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
cd /etc/yum.repos.d
cat docker-ce.repo 看到地址是官方的,切换为国内
sed -e 's|download.docker.com|mirrors.ustc.edu.cn/docker-ce|g' docker-ce.repo -i.bak
###4. 安装docker-ce
yum install docker-ce -y
###5. 配置deamo
cat > /etc/docker/daemon.json <<EOF
{
"default-ipc-mode": "shareable", #指定ipc模式共享,默认是关闭的
"data-root": "/data/docker", #当前docker的根目录,默认是/var/lib/docker
"exec-opts": ["native.cgroupdriver=systemd"], #指定启动的额外参数,官方建议
"log-driver": "json-file", #当前日志驱动为json-file
"log-opts": {"max-size": "100m","max-file":"100"}, #单文件大小,以及文件数
"insecure-registries": ["harbor.xinxainghf.com"], #当前信任的仓库地址
"registry-mirrors": [ # 镜像地址
"https://x9r52uz5.mirror.aliyuncs.com",
"https://dockerhub.icu",
"https://docker.chenby.cn",
"https://docker.1panel.live",
"https://docker.awsl9527.cn",
"https://docker.anyhub.us.kg",
"https://dhub.kubesre.xyz"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker info
出现的结果中有刚刚配置的几个镜像源就代表成功了。
###6. 创建目录
mkdir -p /etc/systemd/system/docker.service.d
###7. 重新启动服务
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
###8. 检查json文件是否错误
jq '.' your-docker-file.json 将 your-docker-file.json 替换为你的 Docker JSON 文件名。如果文件语法正确,你会看到文件内容的输出。如果文件有语法错误,jq 会报告错误。
`if jq '.' your-docker-file.json >/dev/null 2>&1; then
echo "JSON syntax is correct."
else
echo "JSON syntax is incorrect."
fi
`执行如下,查看详细报错:

###9. 如果是key-value 错误,执行等于右边的命令执行
ExecStart=/usr/bin/dockerd
###10. 基于Docker模拟
下载pause
https://download.csdn.net/download/wenwst/10757512?utm_medium=distribute.pc_relevant_download.none-task-download-2~default~LANDING_RERANK~Rate-1-10757512-download-12232161.257%5Ev16%5Epc_dl_relevant_base1_a&depth_1-utm_source=distribute.pc_relevant_download.none-task-download-2~default~LANDING_RERANK~Rate-1-10757512-download-12232161.257%5Ev16%5Epc_dl_relevant_base1_a&spm=1003.2020.3001.6616.1
`docker load -i /path/to/image.tar`
重新设置名称: da86e6ba6ca1 是 镜像ID
`docker tag da86e6ba6ca1 k8s.gcr.io/pause:3.1`
`docker run --name pause -p 8080:80 -d k8s.gcr.io/pause:3.1`
#说明:pause共享网络,pid,ipc,
#11.拉取镜像
#如果你的k8s使用的事docker客户端
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
#如果使用containerd自带客户端
crictl pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
ctr -n k8s.io i tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
#如果要删除所有未使用的镜像(即没有容器引用的镜像),可以使用:
docker image prune -a
#这里是删除特定Docker镜像的命令示例:
docker rmi my-image
#启动命令,注意版本号
docker run --name pause -p 8080:80 -d k8s.gcr.io/pause:3.2
#说明:
在 Linux 中,IPC(Inter-Process Communication)命名空间用于隔离进程间通信的资源,包括共享内存、信号量和消息队列。IPC 命名空间是 Linux 命名空间的一种类型,它允许在同一主机上创建多个隔离的 IPC 实例,每个实例都有自己的 IPC 资源。
Pause容器中的PID(Process ID)是指容器进程的标识符。
在Kubernetes中,每个Pod都会运行一个Pause容器,其他业务容器则从Pause容器中fork出来。Pause容器作为Pod的初始化容器,负责初始化命名空间并管理PID,确保容器间共享资源。Pause容器是Pod的PID 1进程,负责回收僵尸进程,特别是在PID命名空间共享下
#12. 执行如下命令前,需要当前目录有nginx文件
#vim /nginx.conf
error_log /var/log/nginx/error.log;
events { worker_connections 1024;}
http {
access_log /var/log/nginx/access.log;
server {
listen 80 default_server;
server_name example.com www.example.com;
location / {
proxy_pass http://127.0.0.1:2368;
}
}
}
#注意:实际nginx配置文件参考源文件,修改上面对应信息即可
#执行命令
docker run --name nginx -v /nginx.conf:/etc/nginx/nginx.conf --net=container:pause --pid=container:pause -d nginx --ipc=container:pause
#执行命令
docker run --name ghost --net=container:pause --pid=container:pause -d ghost --ipc=container:pause
12. 查看镜像

13. 访问页面 192.168.66.11:8080

14.为什么使用pause
14-1. pause更稳定
14-2. pause可以回收僵死进程
Pod 是一种概念,是一个逻辑,符合这种pause特性,都叫做Pod
浙公网安备 33010602011771号