0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Docker与Kubernetes在生产环境中的最佳应用

马哥Linux运维 ? 来源:马哥Linux运维 ? 2025-08-18 11:25 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

容器化部署实践:Docker与Kubernetes在生产环境中的最佳应用

引言:为什么你的系统需要容器化?

还记得上次凌晨3点被电话叫醒处理生产环境故障吗?还记得因为环境不一致导致的"在我机器上能跑"的尴尬吗?如果你正在经历这些痛点,那么这篇文章将彻底改变你的运维生涯。

在我过去8年的运维经历中,见证了从传统物理机到虚拟化,再到容器化的完整演进。今天,我将分享在管理超过1000个容器、日均处理10亿请求的生产环境中积累的实战经验。

一、Docker:从入门到生产级实践

1.1 Docker镜像优化:让你的镜像从1GB瘦身到50MB

很多人使用Docker时最大的误区就是把它当虚拟机用。让我用一个真实案例说明如何优化:

优化前的Dockerfile(镜像大小:1.2GB)

FROMubuntu:20.04
RUNapt-get update && apt-get install -y python3 python3-pip nodejs npm
COPY. /app
WORKDIR/app
RUNpip3 install -r requirements.txt
RUNnpm install
CMD["python3","app.py"]

优化后的Dockerfile(镜像大小:85MB)

# 构建阶段
FROMpython:3.9-alpine AS builder
WORKDIR/app
COPYrequirements.txt .
RUNpip install --user -r requirements.txt

# 运行阶段
FROMpython:3.9-alpine
RUNapk add --no-cache libpq
COPY--from=builder /root/.local /root/.local
COPY--from=builder /app /app
WORKDIR/app
COPY. .
ENVPATH=/root/.local/bin:$PATH
CMD["python","app.py"]

关键优化技巧:

? 使用Alpine Linux作为基础镜像

? 采用多阶段构建减少最终镜像层数

? 合并RUN命令减少镜像层

? 清理不必要的缓存和临时文件

? 使用.dockerignore排除无关文件

1.2 生产环境Docker安全实践

安全永远是生产环境的第一要务。以下是我总结的Docker安全清单:

# docker-compose.yml 安全配置示例
version:'3.8'
services:
app:
 image:myapp:latest
 security_opt:
  -no-new-privileges:true
 cap_drop:
  -ALL
 cap_add:
  -NET_BIND_SERVICE
 read_only:true
 tmpfs:
  -/tmp
 user:"1000:1000"
 networks:
  -internal
 deploy:
  resources:
   limits:
    cpus:'0.5'
    memory:512M
   reservations:
    cpus:'0.25'
    memory:256M

核心安全措施:

? 以非root用户运行容器

? 限制容器capabilities

? 使用只读文件系统

? 设置资源限制防止资源耗尽攻击

? 定期扫描镜像漏洞

1.3 Docker网络架构设计

在生产环境中,合理的网络架构至关重要:

# 创建自定义网络
docker network create --driver bridge 
 --subnet=172.20.0.0/16 
 --ip-range=172.20.240.0/20 
 --gateway=172.20.0.1 
 production-network

# 容器间通信最佳实践
docker run -d 
 --name backend 
 --network production-network 
 --network-alias api-server 
 myapp:backend

docker run -d 
 --name frontend 
 --network production-network 
 -e API_URL=http://api-server:8080 
 myapp:frontend

二、Kubernetes:构建企业级容器编排平台

2.1 K8s架构设计:高可用集群部署方案

一个生产级的Kubernetes集群需要考虑的不仅仅是功能,更重要的是稳定性和可扩展性。

高可用Master节点配置:

# kubeadm-config.yaml
apiVersion:kubeadm.k8s.io/v1beta3
kind:ClusterConfiguration
kubernetesVersion:v1.28.0
controlPlaneEndpoint:"k8s-api.example.com:6443"
networking:
serviceSubnet:"10.96.0.0/12"
podSubnet:"10.244.0.0/16"
dnsDomain:"cluster.local"
etcd:
external:
 endpoints:
  -https://etcd-0.example.com:2379
  -https://etcd-1.example.com:2379
  -https://etcd-2.example.com:2379
 caFile:/etc/kubernetes/pki/etcd/ca.crt
 certFile:/etc/kubernetes/pki/etcd/client.crt
 keyFile:/etc/kubernetes/pki/etcd/client.key

2.2 应用部署最佳实践:从开发到生产的完整流程

让我们通过一个完整的微服务部署案例来展示K8s的强大能力:

1. 应用配置管理(ConfigMap & Secret)

apiVersion:v1
kind:ConfigMap
metadata:
name:app-config
namespace:production
data:
database.conf:|
  host=db.example.com
  port=5432
  pool_size=20
redis.conf:|
  host=redis.example.com
  port=6379
 
---
apiVersion:v1
kind:Secret
metadata:
name:app-secrets
namespace:production
type:Opaque
data:
db-password:cGFzc3dvcmQxMjM=# base64编码
api-key:YWJjZGVmZ2hpams=

2. 应用部署(Deployment)

apiVersion:apps/v1
kind:Deployment
metadata:
name:api-server
namespace:production
labels:
 app:api-server
 version:v2.1.0
spec:
replicas:3
strategy:
 type:RollingUpdate
 rollingUpdate:
  maxSurge:1
  maxUnavailable:0
selector:
 matchLabels:
  app:api-server
template:
 metadata:
  labels:
   app:api-server
   version:v2.1.0
 spec:
  affinity:
   podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
    -labelSelector:
      matchExpressions:
      -key:app
       operator:In
       values:
       -api-server
     topologyKey:kubernetes.io/hostname
  containers:
  -name:api-server
   image:registry.example.com/api-server:v2.1.0
   ports:
   -containerPort:8080
    name:http
   -containerPort:9090
    name:metrics
   env:
   -name:DB_PASSWORD
    valueFrom:
     secretKeyRef:
      name:app-secrets
      key:db-password
   volumeMounts:
   -name:config
    mountPath:/etc/config
    readOnly:true
   resources:
    requests:
     memory:"256Mi"
     cpu:"250m"
    limits:
     memory:"512Mi"
     cpu:"500m"
   livenessProbe:
    httpGet:
     path:/health
     port:8080
    initialDelaySeconds:30
    periodSeconds:10
   readinessProbe:
    httpGet:
     path:/ready
     port:8080
    initialDelaySeconds:5
    periodSeconds:5
  volumes:
  -name:config
   configMap:
    name:app-config

3. 服务暴露(Service & Ingress)

apiVersion:v1
kind:Service
metadata:
name:api-server-service
namespace:production
spec:
type:ClusterIP
selector:
 app:api-server
ports:
-port:80
 targetPort:8080
 name:http
 
---
apiVersion:networking.k8s.io/v1
kind:Ingress
metadata:
name:api-ingress
namespace:production
annotations:
 nginx.ingress.kubernetes.io/rewrite-target:/
 nginx.ingress.kubernetes.io/ssl-redirect:"true"
 cert-manager.io/cluster-issuer:"letsencrypt-prod"
spec:
ingressClassName:nginx
tls:
-hosts:
 -api.example.com
 secretName:api-tls-secret
rules:
-host:api.example.com
 http:
  paths:
  -path:/
   pathType:Prefix
   backend:
    service:
     name:api-server-service
     port:
      number:80

2.3 自动扩缩容策略:让你的系统具备弹性

水平自动扩缩容(HPA)配置:

apiVersion:autoscaling/v2
kind:HorizontalPodAutoscaler
metadata:
name:api-server-hpa
namespace:production
spec:
scaleTargetRef:
 apiVersion:apps/v1
 kind:Deployment
 name:api-server
minReplicas:3
maxReplicas:20
metrics:
-type:Resource
 resource:
  name:cpu
  target:
   type:Utilization
   averageUtilization:70
-type:Resource
 resource:
  name:memory
  target:
   type:Utilization
   averageUtilization:80
-type:Pods
 pods:
  metric:
   name:http_requests_per_second
  target:
   type:AverageValue
   averageValue:"1000"
behavior:
 scaleDown:
  stabilizationWindowSeconds:300
  policies:
  -type:Percent
   value:50
   periodSeconds:60
 scaleUp:
  stabilizationWindowSeconds:0
  policies:
  -type:Percent
   value:100
   periodSeconds:30
  -type:Pods
   value:5
   periodSeconds:60

三、监控与日志:构建可观测性平台

3.1 Prometheus + Grafana监控体系

部署Prometheus监控栈:

# prometheus-config.yaml
apiVersion:v1
kind:ConfigMap
metadata:
name:prometheus-config
namespace:monitoring
data:
prometheus.yml:|
  global:
   scrape_interval: 15s
   evaluation_interval: 15s
  scrape_configs:
  - job_name: 'kubernetes-pods'
   kubernetes_sd_configs:
   - role: pod
   relabel_configs:
   - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
    action: keep
    regex: true
   - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
    action: replace
    target_label: __metrics_path__
    regex: (.+)
   - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
    action: replace
    regex: ([^:]+)(?::d+)?;(d+)
    replacement: $1:$2
    target_label: __address__

自定义监控指标示例:

# Python应用集成Prometheus
fromprometheus_clientimportCounter, Histogram, Gauge, start_http_server
importtime

# 定义指标
request_count = Counter('app_requests_total','Total requests', ['method','endpoint'])
request_duration = Histogram('app_request_duration_seconds','Request duration', ['method','endpoint'])
active_connections = Gauge('app_active_connections','Active connections')

# 在应用中使用
@request_duration.labels(method='GET', endpoint='/api/users').time()
defget_users():
  request_count.labels(method='GET', endpoint='/api/users').inc()
 # 业务逻辑
 returnusers

# 启动metrics服务器
start_http_server(9090)

3.2 ELK日志收集方案

Fluentd配置示例:

apiVersion:v1
kind:ConfigMap
metadata:
name:fluentd-config
namespace:kube-system
data:
fluent.conf:|
  
   @type tail
   path /var/log/containers/*.log
   pos_file /var/log/fluentd-containers.log.pos
   tag kubernetes.*
   
    @type json
    time_format %Y-%m-%dT%H:%M:%S.%NZ
   
  
 
 
  @typekubernetes_metadata
 
 
 
  @typeelasticsearch
  hostelasticsearch.elastic-system.svc.cluster.local
  port9200
  logstash_formattrue
  logstash_prefixkubernetes
  
   @typefile
   path/var/log/fluentd-buffers/kubernetes.system.buffer
   flush_modeinterval
   retry_typeexponential_backoff
   flush_interval5s
   retry_foreverfalse
   retry_max_interval30
   chunk_limit_size2M
   queue_limit_length8
   overflow_actionblock
  
 

四、CI/CD集成:实现真正的DevOps

4.1 GitLab CI/CD Pipeline配置

# .gitlab-ci.yml
stages:
-build
-test
-security
-deploy

variables:
DOCKER_DRIVER:overlay2
DOCKER_TLS_CERTDIR:""
REGISTRY:registry.example.com
IMAGE_TAG:$CI_COMMIT_SHORT_SHA

build:
stage:build
image:docker:20.10
services:
 -docker:20.10-dind
script:
 -dockerbuild-t$REGISTRY/$CI_PROJECT_NAME:$IMAGE_TAG.
 -dockerpush$REGISTRY/$CI_PROJECT_NAME:$IMAGE_TAG
only:
 -main
 -develop

test:
stage:test
image:$REGISTRY/$CI_PROJECT_NAME:$IMAGE_TAG
script:
 -pytesttests/--cov=app--cov-report=xml
 -coveragereport
coverage:'/TOTAL.*s+(d+%)$/'
artifacts:
 reports:
  coverage_report:
   coverage_format:cobertura
   path:coverage.xml

security-scan:
stage:security
image:aquasec/trivy:latest
script:
 -trivyimage--severityHIGH,CRITICAL$REGISTRY/$CI_PROJECT_NAME:$IMAGE_TAG
allow_failure:false

deploy-production:
stage:deploy
image:bitnami/kubectl:latest
script:
 -kubectlsetimagedeployment/api-serverapi-server=$REGISTRY/$CI_PROJECT_NAME:$IMAGE_TAG-nproduction
 -kubectlrolloutstatusdeployment/api-server-nproduction
environment:
 name:production
 url:https://api.example.com
only:
 -main
when:manual

4.2 蓝绿部署与金丝雀发布

金丝雀发布配置:

# 使用Flagger实现自动化金丝雀发布
apiVersion:flagger.app/v1beta1
kind:Canary
metadata:
name:api-server
namespace:production
spec:
targetRef:
 apiVersion:apps/v1
 kind:Deployment
 name:api-server
service:
 port:80
 targetPort:8080
 gateways:
 -public-gateway.istio-system.svc.cluster.local
 hosts:
 -api.example.com
analysis:
 interval:1m
 threshold:10
 maxWeight:50
 stepWeight:5
 metrics:
 -name:request-success-rate
  thresholdRange:
   min:99
  interval:1m
 -name:request-duration
  thresholdRange:
   max:500
  interval:1m
webhooks:
 -name:load-test
  url:http://flagger-loadtester.test/
  timeout:5s
  metadata:
   cmd:"hey -z 1m -q 10 -c 2 http://api.example.com/"

五、故障处理与性能优化

5.1 常见问题排查清单

Pod无法启动问题排查:

# 1. 查看Pod状态
kubectl get pods -n production -o wide

# 2. 查看Pod事件
kubectl describe pod  -n production

# 3. 查看容器日志
kubectl logs  -n production --previous

# 4. 进入容器调试
kubectlexec-it  -n production -- /bin/sh

# 5. 查看资源使用情况
kubectl top pods -n production

# 6. 检查网络连通性
kubectl run tmp-shell --rm-i --tty--image nicolaka/netshoot -- /bin/bash

5.2 性能优化实战

JVM应用在K8s中的优化:

# Dockerfile优化
FROMopenjdk:11-jre-slim
ENVJAVA_OPTS="-XX:MaxRAMPercentage=75.0 
       -XX:+UseG1GC 
       -XX:+UnlockExperimentalVMOptions 
       -XX:+UseCGroupMemoryLimitForHeap"
COPYapp.jar /app.jar
ENTRYPOINT["sh","-c","java$JAVA_OPTS-jar /app.jar"]

资源限制优化策略:

resources:
requests:
 memory:"1Gi"
 cpu:"500m"
limits:
 memory:"2Gi"
 cpu:"1000m"
# 经验法则:
# - requests设置为平均使用量
# - limits设置为峰值使用量的1.2-1.5倍
# - CPU limits可以适当放宽,内存limits要严格控制

六、安全加固:打造铜墙铁壁

6.1 RBAC权限管理

# 创建只读用户示例
apiVersion:v1
kind:ServiceAccount
metadata:
name:readonly-user
namespace:production

---
apiVersion:rbac.authorization.k8s.io/v1
kind:Role
metadata:
name:readonly-role
namespace:production
rules:
-apiGroups:["","apps","batch"]
resources:["pods","services","deployments","jobs"]
verbs:["get","list","watch"]

---
apiVersion:rbac.authorization.k8s.io/v1
kind:RoleBinding
metadata:
name:readonly-binding
namespace:production
subjects:
-kind:ServiceAccount
name:readonly-user
namespace:production
roleRef:
kind:Role
name:readonly-role
apiGroup:rbac.authorization.k8s.io

6.2 网络策略(Network Policy)

apiVersion:networking.k8s.io/v1
kind:NetworkPolicy
metadata:
name:api-server-netpol
namespace:production
spec:
podSelector:
 matchLabels:
  app:api-server
policyTypes:
-Ingress
-Egress
ingress:
-from:
 -namespaceSelector:
   matchLabels:
    name:production
 -podSelector:
   matchLabels:
    app:frontend
 ports:
 -protocol:TCP
  port:8080
egress:
-to:
 -namespaceSelector:
   matchLabels:
    name:production
 ports:
 -protocol:TCP
  port:5432# PostgreSQL
 -protocol:TCP
  port:6379# Redis
-to:
 -namespaceSelector:{}
  podSelector:
   matchLabels:
    k8s-app:kube-dns
 ports:
 -protocol:UDP
  port:53

七、成本优化:让每一分钱都花在刀刃上

7.1 资源利用率优化

Vertical Pod Autoscaler配置:

apiVersion:autoscaling.k8s.io/v1
kind:VerticalPodAutoscaler
metadata:
name:api-server-vpa
namespace:production
spec:
targetRef:
 apiVersion:apps/v1
 kind:Deployment
 name:api-server
updatePolicy:
 updateMode:"Auto"
resourcePolicy:
 containerPolicies:
 -containerName:api-server
  minAllowed:
   cpu:100m
   memory:128Mi
  maxAllowed:
   cpu:2
   memory:2Gi

7.2 节点资源优化

# 设置节点污点实现资源隔离
kubectl taint nodes gpu-node-1 gpu=true:NoSchedule

# Pod中使用容忍度
tolerations:
- key:"gpu"
 operator:"Equal"
 value:"true"
 effect:"NoSchedule"

八、实战案例:从0到1搭建高可用微服务架构

让我们通过一个完整的电商系统来展示如何将上述所有技术整合:

8.1 系统架构设计

# namespace隔离
apiVersion:v1
kind:Namespace
metadata:
name:ecommerce-prod
labels:
 istio-injection:enabled
 
---
# 微服务部署示例:订单服务
apiVersion:apps/v1
kind:Deployment
metadata:
name:order-service
namespace:ecommerce-prod
spec:
replicas:5
selector:
 matchLabels:
  app:order-service
template:
 metadata:
  labels:
   app:order-service
   version:v1.0.0
  annotations:
   prometheus.io/scrape:"true"
   prometheus.io/port:"9090"
 spec:
  containers:
  -name:order-service
   image:registry.example.com/order-service:v1.0.0
   ports:
   -containerPort:8080
    name:http
   -containerPort:9090
    name:metrics
   env:
   -name:SPRING_PROFILES_ACTIVE
    value:"production"
   -name:DB_HOST
    valueFrom:
     configMapKeyRef:
      name:db-config
      key:host
   livenessProbe:
    httpGet:
     path:/actuator/health/liveness
     port:8080
    initialDelaySeconds:60
    periodSeconds:10
   readinessProbe:
    httpGet:
     path:/actuator/health/readiness
     port:8080
    initialDelaySeconds:30
    periodSeconds:5
   resources:
    requests:
     memory:"512Mi"
     cpu:"250m"
    limits:
     memory:"1Gi"
     cpu:"500m"

8.2 服务网格配置(Istio)

# VirtualService配置
apiVersion:networking.istio.io/v1beta1
kind:VirtualService
metadata:
name:order-service-vs
namespace:ecommerce-prod
spec:
hosts:
-order-service
http:
-match:
 -headers:
   version:
    exact:v2
 route:
 -destination:
   host:order-service
   subset:v2
  weight:100
-route:
 -destination:
   host:order-service
   subset:v1
  weight:90
 -destination:
   host:order-service
   subset:v2
  weight:10
  
---
# DestinationRule配置
apiVersion:networking.istio.io/v1beta1
kind:DestinationRule
metadata:
name:order-service-dr
namespace:ecommerce-prod
spec:
host:order-service
trafficPolicy:
 connectionPool:
  tcp:
   maxConnections:100
  http:
   http1MaxPendingRequests:50
   h2MaxRequests:100
 loadBalancer:
  simple:LEAST_REQUEST
 outlierDetection:
  consecutiveErrors:5
  interval:30s
  baseEjectionTime:30s
subsets:
-name:v1
 labels:
  version:v1.0.0
-name:v2
 labels:
  version:v2.0.0

九、故障恢复与灾备方案

9.1 备份策略

#!/bin/bash
# etcd备份脚本
ETCDCTL_API=3 etcdctl 
 --endpoints=https://127.0.0.1:2379 
 --cacert=/etc/kubernetes/pki/etcd/ca.crt 
 --cert=/etc/kubernetes/pki/etcd/server.crt 
 --key=/etc/kubernetes/pki/etcd/server.key 
 snapshot save /backup/etcd-snapshot-$(date+%Y%m%d-%H%M%S).db

# 使用Velero进行集群备份
velero backup create prod-backup 
 --include-namespaces ecommerce-prod 
 --snapshot-volumes 
 --ttl 720h

9.2 跨区域容灾

# Federation配置示例
apiVersion:types.kubefed.io/v1beta1
kind:FederatedDeployment
metadata:
name:order-service
namespace:ecommerce-prod
spec:
template:
 metadata:
  labels:
   app:order-service
 spec:
  replicas:3
  # ... deployment spec
placement:
 clusters:
 -name:cluster-beijing
 -name:cluster-shanghai
overrides:
-clusterName:cluster-beijing
 clusterOverrides:
 -path:"/spec/replicas"
  value:5
-clusterName:cluster-shanghai
 clusterOverrides:
 -path:"/spec/replicas"
  value:3

十、性能测试与压测方案

10.1 使用K6进行压力测试

// k6-test.js
importhttpfrom'k6/http';
import{ check, sleep }from'k6';
import{Rate}from'k6/metrics';

constfailureRate =newRate('failed_requests');

exportletoptions = {
stages: [
  {duration:'2m',target:100}, // 逐步增加到100个用户
  {duration:'5m',target:100}, // 保持100个用户
  {duration:'2m',target:200}, // 增加到200个用户
  {duration:'5m',target:200}, // 保持200个用户
  {duration:'2m',target:0},  // 逐步降到0
 ],
thresholds: {
 http_req_duration: ['p(95)<500'],?// 95%的请求在500ms内完成
? ??failed_requests: ['rate<0.1'], ? ?// 错误率低于10%
? },
};

exportdefaultfunction() {
let?response = http.get('https://api.example.com/orders');

check(response, {
? ??'status is 200':?(r) =>r.status===200,
 'response time < 500ms':?(r) =>r.timings.duration

实战总结:我的十大运维心得

1.永远不要在生产环境直接操作:先在测试环境验证,使用GitOps管理所有变更

2.监控先行:没有监控的系统等于裸奔,先部署监控再上线业务

3.自动化一切:能自动化的绝不手动,减少人为错误

4.做好容量规划:提前预估资源需求,避免临时扩容的被动局面

5.灾备演练常态化:定期进行故障演练,不要等真出事才发现备份不可用

6.文档即代码:所有配置和流程都要文档化,最好是代码化

7.安全是红线:宁可性能差一点,也不能有安全隐患

8.保持学习:容器技术发展迅速,持续学习才能不被淘汰

9.关注成本:技术优化的同时要考虑成本效益

10.建立SRE文化:从救火队员转变为系统可靠性工程师

结语:开启你的容器化之旅

容器化不是银弹,但它确实能解决传统运维的很多痛点。从Docker到Kubernetes,从微服务到服务网格,这条路虽然充满挑战,但也充满机遇。

记住,最好的架构是演进出来的,不是设计出来的。从小处着手,逐步优化,持续改进。今天分享的这些实践,都是我在无数个不眠夜晚中总结出来的经验教训。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 容器
    +关注

    关注

    0

    文章

    516

    浏览量

    22554
  • Docker
    +关注

    关注

    0

    文章

    520

    浏览量

    13127
  • kubernetes
    +关注

    关注

    0

    文章

    253

    浏览量

    9146

原文标题:容器化部署实践:Docker与Kubernetes在生产环境中的最佳应用

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Kubernetes之路 2 - 利用LXCFS提升容器资源可见性

    摘要: 这是本系列的第2篇内容,将介绍在DockerKubernetes环境解决遗留应用无法识别容器资源限制的问题。本系列文章记录了企业客户在应用
    发表于 04-17 14:05

    如何在Docker创建容器

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal
    发表于 01-03 15:58

    dockerjava环境的部署

    docker 部署java环境以及常用应用(持续更新)
    发表于 05-24 15:44

    RFID在生产线管理的应用有哪些?

    传统生产线管理存在的问题是什么?RFID在生产线管理的应用有哪些?生产线实时RFID系统后的收益如何?
    发表于 05-19 06:24

    如何在Arm上利用Istio搭建一个基于Kubernetes的Service Mesh平台

    基于Kubernetes的Service Mesh平台。流程环境要求准备配置环境编译生成镜像搭建Kubernetes 环境配置安装Istio
    发表于 03-30 10:59

    混合云环境Kubernetes HPC使用经验

    该公司成立于2013年,致力于开发HPC容器技术和容器化工程应用程序,以促进在共享的本地或按需云环境访问和使用工程HPC工作负载。本文及上一篇文章,他们描述了过去12个月在Kubernet
    的头像 发表于 03-21 11:47 ?2233次阅读

    Docker工具分类列表

    不仅仅是一个容器编排器,还是一个用于在生产环境运行Docker的完整的容器管理平台。RancherOS是一个基于容器的操作系统(OS),能够提供诸如全局和本地负载平衡,多主机联网以及
    的头像 发表于 05-19 16:58 ?2609次阅读

    Kubernetes是什么,一文了解Kubernetes

    香了。 这时候就需要我们的主角 Kubernetes 上场了,先来了解一下 Kubernetes 的基本概念,后面再介绍实践,由浅入深步步为营。 关于 Kubernetes 的基本概念我们将会围绕如下七点展开: 一、
    发表于 12-21 13:40 ?1939次阅读
    <b class='flag-5'>Kubernetes</b>是什么,一文了解<b class='flag-5'>Kubernetes</b>

    docker-book DockerKubernetes开源书

    gitee-docker-book.zip
    发表于 04-19 14:22 ?0次下载
    <b class='flag-5'>docker</b>-book <b class='flag-5'>Docker</b>与<b class='flag-5'>Kubernetes</b>开源书

    什么是Kubernetes容器运行时CRI

    起初,Docker是事实上的容器技术标准,Kubernetes v1.5之前的代码中直接调用Docker API,实现容器运行时的相关操作。
    的头像 发表于 02-20 16:22 ?2247次阅读
    什么是<b class='flag-5'>Kubernetes</b>容器运行时CRI

    Docker、Containerd和Kubernetes之间的关系

    Docker是最早出现的那批容器引擎工具,所以它最早占领了市场。Kubernetes主要用来做容器编排,用来管理容器集群,是一个平台。
    的头像 发表于 04-08 10:44 ?2099次阅读

    Docker运行环境安装

    、发布、测试和部署,可以帮助开发人员将最新版本代码应用到生产环境Docker可以安装在多个平台中,包括Mac、Windows和Linux。不过,
    的头像 发表于 10-29 11:28 ?766次阅读

    生产环境Kubernetes容器安全的最佳实践

    随着容器化技术的快速发展,Kubernetes已成为企业级容器编排的首选平台。然而,在享受Kubernetes带来的便利性和可扩展性的同时,安全问题也日益凸显。本文将从运维工程师的角度,深入探讨生产
    的头像 发表于 07-14 11:09 ?191次阅读

    Docker容器安全攻防实战案例

    在云原生时代,Docker已成为现代应用部署的基石。然而,容器化带来便利的同时,也引入了新的安全挑战。作为一名在生产环境管理过数千个容器的运维工程师,我将通过真实的攻防实战案例,带你
    的头像 发表于 08-05 09:52 ?147次阅读

    Kubernetes安全加固的核心技术

    在生产环境Kubernetes集群的安全性直接关系到企业数据安全和业务稳定性。本文将从实战角度,带你掌握K8s安全加固的核心技术。
    的头像 发表于 08-18 11:18 ?60次阅读