容器化技术已成为现代IT基础设施的重要组成部分,以下是Linux系统容器化部署和管理的全面指南。
# Ubuntu/Debian
sudo apt update
sudo apt install docker.io
sudo systemctl enable --now docker
# CentOS/RHEL
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker
# 拉取镜像
docker pull ubuntu:20.04
# 运行容器
docker run -it --name my_container ubuntu:20.04 /bin/bash
# 列出容器
docker ps -a
# 停止/启动容器
docker stop my_container
docker start my_container
# 删除容器
docker rm my_container
# 构建镜像
docker build -t my_image .
# 列出镜像
docker images
# 推送镜像到仓库
docker tag my_image username/my_image
docker push username/my_image
# 创建自定义网络
docker network create my_network
# 连接容器到网络
docker run --network=my_network --name container1 my_image
docker run --network=my_network --name container2 my_image
# 创建卷
docker volume create my_volume
# 使用卷
docker run -v my_volume:/data my_image
# 绑定挂载主机目录
docker run -v /host/path:/container/path my_image
# 限制CPU和内存
docker run --cpus=1 --memory=512m my_image
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube start
# 部署应用
kubectl create deployment my-app --image=my_image
# 暴露服务
kubectl expose deployment my-app --type=LoadBalancer --port=80
# 查看资源
kubectl get pods,services,deployments
非root用户运行容器
docker run --user 1000:1000 my_image
只读文件系统
docker run --read-only my_image
限制能力
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE my_image
定期更新镜像
docker pull my_image:latest
docker logs my_container
docker logs --tail 100 -f my_container # 实时查看
docker stats
docker top my_container
# 部署监控栈
docker run -d --name=prometheus -p 9090:9090 prom/prometheus
docker run -d --name=grafana -p 3000:3000 grafana/grafana
工具 | 适用场景 | 特点 |
---|---|---|
Docker Compose | 单机多容器应用 | 简单YAML配置 |
Kubernetes | 生产级容器编排 | 自动扩展、自愈 |
Nomad | 简单轻量级编排 | 支持容器和非容器工作负载 |
Swarm | Docker原生集群 | 与Docker紧密集成 |
容器无法启动
docker inspect my_container
docker logs my_container
网络问题
docker network inspect my_network
docker exec -it my_container ping google.com
资源不足
docker stats
free -h
top
通过掌握这些容器化技术,您可以在Linux系统上高效地部署、管理和扩展容器化应用。