Docker / k8s
2024-02-23 11:55:07 11 举报
AI智能生成
登录查看完整内容
Docker和Kubernetes(简称k8s)是现代软件开发和运维领域中两个重要的工具。Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中,从而实现跨平台的部署。这使得开发者可以专注于编写代码,而不必担心底层环境的差异。 Kubernetes则是一个用于自动部署、扩展和管理容器化应用程序的开源平台。它可以在多个主机上运行容器化的应用程序,并提供负载均衡、自动扩缩容、滚动更新等功能,以确保应用程序的高可用性和弹性。Kubernetes与Docker紧密集成,使得开发者可以轻松地在生产环境中部署和管理Docker容器。
作者其他创作
大纲/内容
开源的容器化平台、开发者将应用程序及其依赖打包到一个容器中,然后在任何支持Docker的机器上运行这个容器、减少只能在我机器上能运行的问题
运行镜像的实例、容器运行隔离开、但是共享内核、可以对容器启动、停止、删除、移动
Containers/容器
容器的基础、轻量级、独立、可执行的软件包、包含素有内容、用来创建容器
Images/镜像
包含一系列指令、如何从一个基础镜像构建一个docker镜像、指令包括复制文件、安装软件包、设置环境变量、最主要的是可以图层缓存
DockerFile/文本文件
用于数据持久化和容器之间的共享文件的机制、独立于容器生命周期之外管理的特殊文件夹或文件
Volumes/数据卷
公共的
Hub/公共镜像库
搭建私有的来存储和管理镜像
Registry/仓库
用户通过一个单独的docker-compose.yml文件定义和运行多个容器的Docker应用。这个工具可以很方便地管理和启动整个应用堆栈。
Compose/工具
后台运行,用于处理、构建、分配、运行Docker容器的任务
Daemon/守护进程
与守护进程交互的主要方式、通常用命令行接口
Client/客户端
核心
传统运行一个别人的程序可能需要各种各样的环境和配置文件、版本还得兼容。现在只要支持docker、然后用它的镜像启动容器就好了
环境一致性
隔离性、资源利用率、部署速度、持久化、维护更新、可移植性、缩放和负载均衡
与传统的虚拟机上运行程序的主要区别
docker build -t 程序名称 .
构建/更新映像
docker run -dp ip:端口:端口 程序名
启动应用容器
docker ps
获取容器的id
docker stop 容器id
停止容器
docker rm 容器id
删除容器
docker tag 镜像名称 用户名/仓库名
打标签
docker push 用户名/仓库名
推送
docker volume create 卷名
创建卷
docker volume inspect 卷名
查看卷的存储位置
todo-app: volumes: - ./app:/usr/src/app - /usr/src/app/node_modules
1.使用工具compose
绑定挂载
docker compose up -d
docker network create 网络名称
2.手动创建网络并启动容器分配网络
运行多容器应用
docker compose watch
容器里开发
把 yaml 文件的数据卷的取消注释
持久化容器数据
docker init
1.创建资产
docker compose up
2.运用程序
容器化应用程序
docker image history --no-trunc 容器名
查看图像中的图层创建
简单命令
用于解决Docker的网络问题
Kubernetes 还使用网络命名空间。Kubelets 为每个 Pod 创建一个网络命名空间,其中该 Pod 中的所有容器共享相同的网络命名空间(eths、IP、tcp sockets...等)
网络命名空间:提供与网络关联的系统资源的隔离
docker run -it --net container:<container_name> nicolaka/netshoot
容器的网络命名空间:应用程序的容器存在网络问题
docker run -it --net host nicolaka/netshoot
主机的网络命名空间:主机存在网络问题
Network的命名空间:对 Docker 网络进行故障排除
version: \"3.6\"services: tcpdump: image: nicolaka/netshoot depends_on: - nginx command: tcpdump -i eth0 -w /data/nginx.pcap network_mode: service:nginx volumes: - $PWD/data:/data nginx: image: nginx:alpine ports: - 80:80
使用 Docker Compose 的 Netshoot
Docker使用
# spin up a throwaway pod for troubleshootingkubectl netshoot run tmp-shell# debug using an ephemeral container in an existing podkubectl netshoot debug my-existing-pod# create a debug session on a nodekubectl netshoot debug node/my-node
插件
K8s
nicolaka/netshoot
是一个开源的容器管理平台,用于自动化容器操作,包括部署、扩展和管理容器化应用程序
一个pod包含一个或多个容器、pod内共享存储、网络和资源、自动创建和销毁
pod
为相同功能pod提供了一个不变的访问接口、即使这些pod数量和位置发生变化
service
维护一组在任何时间都处于运行状态的pod副本数、由deployment来声明
ReplicaSet
声明式 改变pod和ReplicaSet的状态
deployment
将集群资源分为多个逻辑分区的方式、用于项目之间的隔离
Namespace
数据持久化、使pod重启后继续存在、pod内容器共享
volume
存储配置信息和敏感信息、如密码、令牌、密钥等,pod可以用环境变量和文件形式使用这些信息
ConfigMap and Secret
管理外部用户访问服务的http、提供负载均衡、ssl终端和基于名字的托管
Ingress
k8s的一台工作机器
node
负责集群的管理和协调操作
Master
k8s的命令行工具
kubectl
xx.yaml
创建配置文件
kubectl apply -f 配置文件
应用程序部署到k8s
kubectl get deployments
列出部署
kubectl logs 程序名称
检查ping日志
kubectl get services
对服务进行检查
kubectl delete -f 配置文件
拆除应用程序
常用命令
部署到K8s
Docker / k8s
0 条评论
回复 删除
下一页