插件窝 干货文章 如何在Linux上使用容器化技术部署应用

如何在Linux上使用容器化技术部署应用

Docker 容器 sudo Minikube 309    来源:    2025-04-16

在Linux上使用容器化技术部署应用主要涉及Docker和Kubernetes等工具。以下是详细步骤和最佳实践:


一、使用Docker部署应用

1. 安装Docker

# 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

2. 构建Docker镜像

  • 创建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 .

3. 运行容器

# 映射端口(主机端口:容器端口)
sudo docker run -d -p 8080:80 --name my-app-container my-app:latest

# 查看运行中的容器
sudo docker ps

4. 管理容器

# 停止/启动容器
sudo docker stop my-app-container
sudo docker start my-app-container

# 查看日志
sudo docker logs my-app-container

二、使用Kubernetes部署(单节点/Minikube)

1. 安装Minikube和kubectl

# 安装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

2. 部署应用到Kubernetes

  • 创建Deployment(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

3. 暴露服务

# 创建Service
kubectl expose deployment my-app --type=NodePort --port=80

# 获取访问地址
minikube service my-app --url

三、高级优化与安全

  1. 镜像优化

    • 使用多阶段构建减少镜像大小。
    • 选择Alpine等轻量级基础镜像。
  2. 持久化存储

    • Docker:使用-v挂载宿主机目录。
    • Kubernetes:使用PersistentVolume
  3. 网络配置

    • Docker:自定义网络(docker network create)。
    • Kubernetes:Ingress控制器(如Nginx Ingress)。
  4. 安全实践

    • 避免以root用户运行容器(USER指令)。
    • 扫描镜像漏洞(docker scan或Trivy)。

四、常用工具链

场景 工具推荐
容器编排 Kubernetes, Docker Swarm
监控日志 Prometheus, Grafana, ELK
CI/CD Jenkins, GitLab CI
镜像仓库 Docker Hub, Harbor

五、故障排查

  1. 容器启动失败

    sudo docker logs <container_id>
    kubectl describe pod <pod_name>
    
  2. 网络问题

    sudo docker network inspect <network_name>
    kubectl get svc -n <namespace>
    
  3. 资源不足

    kubectl top pods  # 查看资源使用
    

通过上述步骤,您可以在Linux上高效部署容器化应用。根据需求选择Docker(简单场景)或Kubernetes(生产级编排)。