在Linux上使用容器化技术部署应用主要涉及Docker和Kubernetes等工具。以下是详细步骤和最佳实践:
# Ubuntu/Debian
sudo apt update
sudo apt install docker.io
sudo systemctl enable --now docker
# CentOS/RHEL
sudo yum install -y docker
sudo systemctl enable --now docker
# 验证安装
sudo docker --version
Dockerfile
(以Python应用为例):
dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
bash
sudo docker build -t my-app:latest .
# 映射端口(主机端口:容器端口)
sudo docker run -d -p 8080:80 --name my-app-container my-app:latest
# 查看运行中的容器
sudo docker ps
# 停止/启动容器
sudo docker stop my-app-container
sudo docker start my-app-container
# 查看日志
sudo docker logs my-app-container
# 安装kubectl
sudo apt install -y kubectl
# 安装Minikube(需提前安装虚拟化驱动如VirtualBox/Docker)
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 启动Minikube
minikube start --driver=docker
deployment.yaml
):
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 2
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:latest
ports:
- containerPort: 80
bash
kubectl apply -f deployment.yaml
# 创建Service
kubectl expose deployment my-app --type=NodePort --port=80
# 获取访问地址
minikube service my-app --url
镜像优化
持久化存储
-v
挂载宿主机目录。PersistentVolume
。网络配置
docker network create
)。安全实践
USER
指令)。docker scan
或Trivy)。场景 | 工具推荐 |
---|---|
容器编排 | Kubernetes, Docker Swarm |
监控日志 | Prometheus, Grafana, ELK |
CI/CD | Jenkins, GitLab CI |
镜像仓库 | Docker Hub, Harbor |
容器启动失败
sudo docker logs <container_id>
kubectl describe pod <pod_name>
网络问题
sudo docker network inspect <network_name>
kubectl get svc -n <namespace>
资源不足
kubectl top pods # 查看资源使用
通过上述步骤,您可以在Linux上高效部署容器化应用。根据需求选择Docker(简单场景)或Kubernetes(生产级编排)。