怎样在CentOS上部署容器技术
导读:在 CentOS 上部署容器技术 一 环境准备与 Docker 安装 更新系统与依赖 执行:sudo yum update -y 安装依赖:sudo yum install -y yum-utils device-mapper-pers...
在 CentOS 上部署容器技术
一 环境准备与 Docker 安装
- 更新系统与依赖
- 执行:
sudo yum update -y - 安装依赖:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 执行:
- 添加仓库并安装 Docker
- 添加仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - 安装组件:
sudo yum install -y docker-ce docker-ce-cli containerd.io
- 添加仓库:
- 启动与验证
- 启动并设置开机自启:
sudo systemctl start docker & & sudo systemctl enable docker - 验证:
docker version或运行测试容器sudo docker run hello-world
- 启动并设置开机自启:
- 说明
- 以上步骤适用于 CentOS 7 及以上版本。
二 运行第一个容器与常用操作
- 运行示例容器
- Nginx:
sudo docker run --name my-nginx -p 80:80 -d nginx - 进入交互式 CentOS:
sudo docker run -it centos:latest /bin/bash
- Nginx:
- 常用管理命令
- 拉取镜像:
sudo docker pull centos:latest - 查看容器:
docker ps -a - 查看日志:
docker logs < 容器ID> - 进入运行中容器:
docker exec -it < 容器ID> /bin/bash - 停止/删除容器:
docker stop < 容器ID>/docker rm < 容器ID> - 删除镜像:
docker rmi < 镜像ID>
- 拉取镜像:
- 数据持久化与网络
- 数据卷:
sudo docker volume create my-data,运行挂载:sudo docker run -v my-data:/app/data -d my-app-image - 绑定挂载:
sudo docker run -v /host/path:/container/path centos:latest - 自定义网络:
sudo docker network create my_network,运行使用:sudo docker run --network my_network centos:latest
- 数据卷:
- 图形化管理(可选)
- Portainer:
sudo docker run -d -p 8000:8000 --restart=always -v /path/to/portainer:/data portainer/portainer,访问 http://localhost:8000。
- Portainer:
三 离线环境安装 Docker
- 在有网环境准备 RPM 包
- 安装依赖与仓库后执行:
sudo yum install -y docker-ce docker-ce-cli containerd.io - 将生成的 RPM 包与仓库文件拷贝到离线机器(如通过 U 盘或内网传输)
- 安装依赖与仓库后执行:
- 在离线机器安装与启动
- 安装:
sudo yum localinstall -y /path/to/docker-ce*.rpm /path/to/containerd.io*.rpm - 启动:
sudo systemctl start docker & & sudo systemctl enable docker - 验证:
docker version
- 安装:
- 适用场景
- 无外网访问或合规要求严格的 内网/隔离网络 环境。
四 进阶 部署 Kubernetes 单节点集群(可选)
- 环境初始化(所有节点)
- 关闭防火墙:
sudo systemctl stop firewalld & & sudo systemctl disable firewalld - 关闭 SELinux:
sudo setenforce 0并修改/etc/selinux/config为SELINUX=permissive(或disabled,生产请评估) - 禁用 Swap:
sudo swapoff -a并注释/etc/fstab中 swap 行 - 时间同步:
sudo yum install -y ntpdate & & sudo ntpdate ntp.aliyun.com - 内核参数:
sudo sysctl -w net.bridge.bridge-nf-call-iptables=1与net.ipv4.ip_forward=1
- 关闭防火墙:
- 安装容器运行时与 k8s 组件
- 安装 Docker(同上)
- 添加 k8s 源并安装:
sudo yum install -y kubelet kubeadm kubectl,然后sudo systemctl enable --now kubelet
- 初始化 Master
- 执行:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=< Master_IP> - 配置 kubectl:
mkdir -p $HOME/.kube & & sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config & & sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 执行:
- 安装 CNI 网络插件
- Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml - 或 Calico:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
- Flannel:
- 加入 Worker 节点
- 在 Master 上获取加入命令:
kubeadm token create --print-join-command - 在 Worker 上执行输出的
kubeadm join ...命令
- 在 Master 上获取加入命令:
- 验证
kubectl get nodes与kubectl get pods --all-namespaces
- 说明
- 上述为入门级单节点部署流程,生产环境需考虑 高可用、网络策略、镜像仓库与持久化存储 等。
五 安全与优化要点
- 镜像与加速
- 配置镜像加速器(在
/etc/docker/daemon.json):{ "registry-mirrors": ["https://your_aliyun_accelerator.mirror.aliyuncs.com"] }
- 配置镜像加速器(在
- 存储与日志
- 存储驱动优先使用 overlay2;日志轮转:
{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }
- 存储驱动优先使用 overlay2;日志轮转:
- 资源与权限
- 运行容器限制资源:
--cpus="0.5" --memory="512m" - 避免
--privileged,按需使用--cap-add/--cap-drop - 非 root 运行:在 Dockerfile 中创建并切换用户
- 运行容器限制资源:
- 安全合规
- 最小化镜像、定期更新宿主机与镜像、镜像漏洞扫描(如 Docker Scout/Clair)
- 防火墙与 SELinux
- 生产不建议直接关闭防火墙,按需放行端口(如
firewall-cmd --permanent --add-port=80/tcp & & firewall-cmd --reload) - SELinux 问题可先临时
setenforce 0排查,生产使用正确的 SELinux 策略/标签(如 volume 挂载使用:z/:Z)。
- 生产不建议直接关闭防火墙,按需放行端口(如
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 怎样在CentOS上部署容器技术
本文地址: https://pptw.com/jishu/758920.html
