温馨提示×

ubuntu虚拟机容器化应用实践

小樊
43
2025-08-27 16:50:45
栏目: 云计算

以下是在Ubuntu虚拟机上实践容器化应用的步骤,涵盖Docker和Kubernetes两种主流方案:

一、Docker容器化应用

1. 环境准备

  • 安装Docker
    sudo apt update sudo apt install docker.io sudo systemctl start docker && sudo systemctl enable docker 
  • 验证安装
    sudo docker run hello-world 

2. 构建应用镜像

  • 创建Dockerfile
    以Python应用为例,在项目目录创建Dockerfile
    FROM python:3.9-slim WORKDIR /app COPY . /app RUN pip install -r requirements.txt EXPOSE 5000 CMD ["python", "app.py"] 
  • 构建镜像
    docker build -t my-app:1.0 . 

3. 运行容器

  • 单容器运行
    docker run -d -p 5000:5000 --name my-app my-app:1.0 
  • 多容器编排(Docker Compose)
    创建docker-compose.yml
    version: '3' services: web: image: my-app:1.0 ports: - "5000:5000" redis: image: redis:latest 
    启动服务:
    docker-compose up -d 

二、Kubernetes容器化应用

1. 环境准备

  • 安装Docker和Kubernetes
    sudo apt update sudo apt install -y docker.io kubelet kubeadm kubectl sudo systemctl enable docker && sudo systemctl start docker 
  • 配置Docker使用systemd作为CGroup驱动
    编辑/etc/docker/daemon.json
    { "exec-opts": ["native.cgroupdriver=systemd"] } sudo systemctl restart docker 

2. 部署Kubernetes集群

  • 初始化Master节点
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config 
  • 加入Worker节点
    在其他虚拟机上执行Master节点输出的kubeadm join命令。

3. 部署容器化应用

  • 创建Deployment
    编写deployment.yaml
    apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: my-app:1.0 ports: - containerPort: 5000 
    部署应用:
    kubectl apply -f deployment.yaml 
  • 暴露服务
    创建service.yaml
    apiVersion: v1 kind: Service metadata: name: my-app-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 5000 type: LoadBalancer 
    应用服务:
    kubectl apply -f service.yaml 

4. 验证与管理

  • 查看Pod状态
    kubectl get pods 
  • 查看服务详情
    kubectl get services 
  • 删除资源
    kubectl delete -f deployment.yaml kubectl delete -f service.yaml 

三、注意事项

  1. 资源分配
    • 虚拟机需预留足够CPU、内存和磁盘空间(建议至少2核4GB)。
    • 可通过kubectl top nodes监控节点资源使用情况。
  2. 网络配置
    • 确保虚拟机间网络互通,Kubernetes集群需配置CNI插件(如Flannel/Calico)。
  3. 数据持久化
    • 使用volumes将容器数据挂载到宿主机或云存储,避免重启后数据丢失。

通过以上步骤,可在Ubuntu虚拟机上完成从单容器到集群化的应用部署,满足开发、测试或轻量级生产环境需求。

0