在 CentOS 上部署容器技术
一 环境准备与 Docker 安装
sudo yum update -ysudo yum install -y yum-utils device-mapper-persistent-data lvm2sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo yum install -y docker-ce docker-ce-cli containerd.iosudo systemctl start docker && sudo systemctl enable dockerdocker version 或运行测试容器 sudo docker run hello-world二 运行第一个容器与常用操作
sudo docker run --name my-nginx -p 80:80 -d nginxsudo docker run -it centos:latest /bin/bashsudo docker pull centos:latestdocker ps -adocker logs <容器ID>docker exec -it <容器ID> /bin/bashdocker 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-imagesudo docker run -v /host/path:/container/path centos:latestsudo docker network create my_network,运行使用:sudo docker run --network my_network centos:latestsudo docker run -d -p 8000:8000 --restart=always -v /path/to/portainer:/data portainer/portainer,访问 http://localhost:8000。三 离线环境安装 Docker
sudo yum install -y docker-ce docker-ce-cli containerd.iosudo yum localinstall -y /path/to/docker-ce*.rpm /path/to/containerd.io*.rpmsudo systemctl start docker && sudo systemctl enable dockerdocker version四 进阶 部署 Kubernetes 单节点集群(可选)
sudo systemctl stop firewalld && sudo systemctl disable firewalldsudo setenforce 0 并修改 /etc/selinux/config 为 SELINUX=permissive(或 disabled,生产请评估)sudo swapoff -a 并注释 /etc/fstab 中 swap 行sudo yum install -y ntpdate && sudo ntpdate ntp.aliyun.comsudo sysctl -w net.bridge.bridge-nf-call-iptables=1 与 net.ipv4.ip_forward=1sudo yum install -y kubelet kubeadm kubectl,然后 sudo systemctl enable --now kubeletsudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<Master_IP>mkdir -p $HOME/.kube && sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && sudo chown $(id -u):$(id -g) $HOME/.kube/configkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubectl apply -f https://docs.projectcalico.org/manifests/calico.yamlkubeadm token create --print-join-commandkubeadm join ... 命令kubectl get nodes 与 kubectl get pods --all-namespaces五 安全与优化要点
/etc/docker/daemon.json):{ "registry-mirrors": ["https://your_aliyun_accelerator.mirror.aliyuncs.com"] }{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }--cpus="0.5" --memory="512m"--privileged,按需使用 --cap-add/--cap-dropfirewall-cmd --permanent --add-port=80/tcp && firewall-cmd --reload)setenforce 0 排查,生产使用正确的 SELinux 策略/标签(如 volume 挂载使用 :z/:Z)。