开发常用命令合集(Docker、K8s、Linux、Windows等)

news2024/12/22 23:42:03

开发常用命令合集(Docker、K8s、Linux、Windows等)

1 Docker

详情查看:https://blog.csdn.net/weixin_45565886/article/details/130130361

1.1 基础命令

①拉取、查看、删除镜像

docker pull nginx  #下载最新版

镜像名:版本名(标签)

docker pull nginx:1.20.1


docker pull redis  #下载最新
docker pull redis:6.2.4

## 下载来的镜像都在本地
docker images  #查看所有镜像

redis = redis:latest

docker rmi 镜像名:版本号/镜像id

案例:

# 1. 拉取镜像
docker pull nginx:1.20.1

# 2. 查看本地镜像
docker images

②运行、查看、停止容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

【docker run  设置项   镜像名  】 镜像启动运行的命令(镜像里面默认有的,一般不会写)

# -d:后台运行
# --restart=always: 开机自启
docker run --name=mynginx   -d  --restart=always -p  88:80   nginx

# 查看正在运行的容器
docker ps
# 查看所有
docker ps -a
# 删除停止的容器
docker rm  容器id/名字
docker rm -f mynginx   #强制删除正在运行中的

#停止容器
docker stop 容器id/名字
#再次启动
docker start 容器id/名字

#应用开机自启
docker update 容器id/名字 --restart=always

案例:

# -d    后台启动
# --restart=always 开机自启
# -p 88:80 将宿主机的88端口映射到nginx容器的80端口
# --name=mynginx 指定启动之后的容器名为mynginx
# nginx:1.20.1 启动版本号为1.20.1的nginx
docker run -d --restart=always -p 88:80 --name=mynginx nginx:1.20.1

③进入容器内部

# 进入容器内部修改[有些可能不是bash是sh,需灵活变化]
# -it 表示进入交互页面
#nginx容器可以当做一个小型的linux,然后里面运行了nginx
docker exec -it 容器id /bin/bash

案例:修改nginx的默认首页

docker ps,查看正在运行的nginx镜像,获取容器id
docker exec -it bcb /bin/bash,进入nginx交互页面
进入nginx的首页
cd /usr/share/nginx/html
修改首页内容:
echo "this is ziyi's pages, elcomclear > index.html
查看结果:你的ip+映射端口(宿主机的)
退出交互页面
exit

1.2 进阶操作

①挂载容器数据到外部

docker run --name=mynginx   \
-d  --restart=always \
-p  88:80 -v /data/html:/usr/share/nginx/html:ro  \
nginx

# 修改页面只需要去 主机的 /data/html
# -v 挂载
/*
/data/html:/usr/share/nginx/html:ro
将容器中的/usr/share/nginx/html挂载到宿主机的/data/html目录,ro表示read only只读
nginx代表nginx:latest镜像名
*/

指定nginx版本

docker run -d -p 88:80 -v /data/html:/usr/share/nginx/html --restart=always --name=mynginx nginx:1.20.1

②提交改变

我们修改了容器中的内容之后,想要打包交给其他电脑去运行,此时就需要将我们修改好之后的镜像进行提交

  1. 提交修改
# docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# -a "ziyi" 指明是谁修改的
# -m "首页变化" 指明做了什么
# 341d81f7504f guignginx:v1.0 指明哪个容器的修改了以及新容器的版本号
docker commit -a "ziyi"  -m "首页变化" 341d81f7504f guignginx:v1.0
  1. 压缩镜像并传输
# 将镜像保存成压缩包
docker save -o abc.tar nginx:v1.0

# 可以通过scp命令远程传输到指定服务器的指定文件夹下
# 别的机器加载这个镜像
docker load -i abc.tar

# 离线安装

③推送到远程hub

  1. 注册并登录自己的dockerhub账号
# 登录docker hub,输入命令然后输入自己用户名与密码
docker login
  1. 打包本地镜像
# 打包本地镜像
# 把旧镜像的名字,改成仓库要求的新版名字
docker tag nginx:v1.0 ziyigun/nginx:v1.0

综合命令:

# 把旧镜像的名字,改成仓库要求的新版名字
docker tag guignginx:v1.0 leifengyang/guignginx:v1.0

# 登录到docker hub
docker login       

docker logout(推送完成镜像后退出)

# 推送
docker push leifengyang/guignginx:v1.0

# 别的机器下载
docker pull leifengyang/guignginx:v1.0

2 K8s

# 查看持续查看workflow的pod日志
kubectl logs workflow-9c6468cb7-f4d6x -n xxx -f --tail=1

# 进入容器内容 -n xxx 指定命名空间
kubectl exec -it -n xxx compression-apk-v1-label-2-66bc688cf4-zgvvr -- sh
# kubectl exec -n ocpf-plugin pod-name -it -- /bin/bash

# -r 支持转义
kubectl logs -n ocpf s3batch-6697bb767f-lr7zx | less -r
# 查询错误,通过/查询包含ERROR
# /ERROR

# 获取xxx命名空间下的deployment【pod、svc同理】
kubectl get deployment -n xxx
# 删除xxx命名空间下名为delpoymentName的deployment【pod、svc同理】
kubectl delete deployment delpoymentName -n xxx

详情见:https://blog.csdn.net/weixin_45565886/article/details/130698024

在这里插入图片描述

2.1 基础命令

①deployment根据Pod的标签关联到Pod,是为了管理pod的生命周期
②service根据Pod的标签关联到pod,是为了让外部访问到pod,给pod做负载均衡

  • 需要注意:
    deployment控制器关联的Pod,Pod的name和hostname(如果不手动指定)就是deployment控制器的Name
    StatefulSet控制器关联的Pod,Pod的Name和Hostname(如果不手动指定)就是StatefulSet控制器的Name + 序号

①基础命令(pod等)

命令含义示例
kubectl run 容器名 --image=容器地址:版本通过命令部署容器kubectl run testapp --image=ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1
kubectl apply -f xxx.yaml通过配置文件部署kubectl apply -f app.yaml
kubectl describe pod pod-name查看pod详情信息kubectl describe pod test-k8s-8598bbb8c6-62c8m
kubectl logs pod-name查看pod日志(-f 持续查看日志)kubectl logs test-k8s-8598bbb8c6-ngmw9
kubectl exec -it pod-name – bash进入pod容器内部(-c参数可指定进入哪个容器)kubectl exec -it test-k8s-8598bbb8c6-knztk – bash

②Deployment

配置文件:

app.yml:

apiVersion: apps/v1
# 表示类型为Deployment
kind: Deployment
metadata:
  # 部署名字
  name: test-k8s
spec:
  replicas: 5
  # 用来查找关联的 Pod,所有标签都匹配才行
  selector:
    matchLabels:
      app: test-k8s
  # 定义 Pod 相关数据
  template:
    metadata:
      labels:
      	# 标签
        app: test-k8s
    spec:
      # 定义容器,可以多个【这一部分就是上面的单个pod】
      containers:
        - name: test-k8s # 容器名字【需要与labels对应】
          image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像[上传到了腾讯云]
命令含义示例
kubectl scale deployment deploymentName --replicas=xx指定deployment副本数kubectl scale deploymnet test-k8s --replicas=5
kubectl apply -f xxx.yaml修改配置文件来重新部署可修改replicas等参数
kubectl port-forward pod-name port:containerPort将外面端口映射到容器内部kubectl port-forward test-k8s-8598bbb8c6-2ff7w 8090:8080
kubectl rollout history deployment deployment-name将部署回退到上一个版本kubectl rollout history deployment test-k8s
kubectl rollout undo deployment deployment-name --to-revision=2回退到指定版本kubectl rollout undo deployment test-k8s --to-revision=2
kubectl delete deployment deployment-name删除部署kubectl delete deployment test-k8s

③Service

配置文件:

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: test-k8s
spec:
  selector:
    app: test-k8s
  type: ClusterIP # 默认
  ports:
    - port: 8080        # 本 Service 的端口
      targetPort: 8080  # 容器端口

应用配置文件:

# 应用配置
kubectl apply -f service.yaml
命令含义示例
kubectl get svc查看service服务kubectl get svc test-k8s
kubectl describe svc service-name查看服务详情kubectl describe svc test-k8s

④StatefulSet

StatefulSet是用来管理有状态的应用,例如数据库。
前面我们部署的应用,都是不需要存储数据,不需要记住状态的,可以随意扩充副本,每个副本都是一样的,可以替代的。

  • 但是像数据库、Redis这类有状态的,则不能随意扩充副本
  • StatefulSet会固定每个Pod的名字,但是Pod的IP不固定

mongo.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mongodb
spec:
  serviceName: mongodb
  replicas: 3
  selector:
    matchLabels:
      app: mongodb
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      containers:
        - name: mongo
          image: mongo:4.4
          # IfNotPresent 仅本地没有镜像时才远程拉,Always 永远都是从远程拉,Never 永远只用本地镜像,本地没有则报错
          imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
  name: mongodb
spec:
  selector:
    app: mongodb
  type: ClusterIP
  # HeadLess
  clusterIP: None
  ports:
    - port: 27017
      targetPort: 27017

⑤Configmap & Secret

⑥Helm & namespace

2.2 进阶命令

3 Linux

3.1 创建和编译代码

mkdir myproject
cd myproject
git clone <repository_url>
cd <repository_name>
make
# mkdir myproject:创建一个名为myproject的目录。
# cd myproject:进入myproject目录。
# git clone <repository_url>:从远程仓库克隆代码到当前目录。
# cd <repository_name>:进入克隆的代码仓库目录。
# make:执行Makefile中的编译命令,编译代码。

3.2 安装和管理依赖包

sudo apt-get update
sudo apt-get install <package_name>
#sudo apt-get update:更新可用的软件包列表。
#sudo apt-get install <package_name>:安装指定的软件包。

3.3 运行和调试命令

./myprogram
gdb myprogram
# ./myprogram:运行名为myprogram的可执行文件。
# gdb myprogram:使用GDB调试器来调试myprogram程序。

3.4 查看日志和输出

tail -f <log_file>
grep <pattern> <file>
# tail -f <log_file>:实时查看日志文件的最新内容。
# grep <pattern> <file>:在文件中查找匹配指定模式的行。

3.5 版本控制和代码管理

git init
git add .
git commit -m "Initial commit"
git push origin master
# git init:初始化一个新的Git仓库。
# git add .:将当前目录下的所有文件添加到Git仓库。
# git commit -m "Initial commit":提交代码更改,并添加提交消息。
# git push origin master:将本地代码推送到远程仓库的master分支。

其他高级用法

# 搜索workflow.log中包含2022的字符,并通过管道符转换到more中
grep "2022" workflow.log | more

4 Windows

详情查看:https://editor.csdn.net/md/?articleId=127912183

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/673542.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

元数据驱动架构的官方数据空间设计

淘宝开放平台是阿里与外部生态互联互通的重要开放途径&#xff0c;通过开放的产品技术把阿里经济体一系列基础服务&#xff0c;像水、电、煤一样输送给我们的商家、开发者、社区媒体以及其他合作伙伴&#xff0c;推动行业的定制、创新、进化, 并最终促成新商业文明生态圈。 开放…

PHP简单入门

PHP是一种流行的服务器端编程语言&#xff0c;被广泛用于Web开发。许多著名的网站和应用程序都是使用PHP编写的&#xff0c;例如Facebook、Wikipedia和WordPress等。本篇文章将为您介绍如何入门PHP编程。 环境配置 在开始使用PHP之前&#xff0c;需要先配置开发环境。要在本…

3ds MAX绘制花坛

绘制一个八边形花坛&#xff1a; 首先绘制一个八边形&#xff0c;并将它转换为可编辑样条线&#xff1a; 在前视图中绘制一个长方形&#xff0c;参数如图&#xff0c;可以按照喜好变换弧度等 注意&#xff0c;长方形的宽要和八边形的边长对应。 接下来我们通过旋转创建完整的…

测试流程体系

目录&#xff1a; 软件测试基本概念软件测试模型软件测试工作流程测试左移和测试右移 1.软件测试基本概念 通过手工或者工具对"被测对象"进行测试验证实际结果与预期结果之间是否存在差异 软件测试作用 通过测试工作可以发现并修复软件当中存在的缺陷&#xff…

环状支撑佩戴,骨传导新体验:南卡OE骨传导开放式耳机

骨传导耳机究竟是“黑科技”还是“智商税”呢&#xff1f;我想近几年的市场反馈就能给出答案。尤其是在户外运动场景下&#xff0c;骨传导耳机的综合体验都要比入耳式耳机更好一些。最近国产品牌南卡推出了一款新形态的骨传导耳机&#xff0c;南卡OE&#xff0c;它通过改良耳机…

【二叉树part03】| 104.二叉树的最大深度、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

目录 ✿LeetCode104.二叉树的最大深度❀ ✿LeetCode559.n叉树的最大深度❀ ✿LeetCode111.二叉树的最小深度❀ ✿LeetCode222.完全二叉树的节点个数❀ ✿LeetCode104.二叉树的最大深度❀ 链接&#xff1a;104.二叉树的最大深度 给定一个二叉树&#xff0c;找出其最大深度…

[Leetcode] 0014. 最长公共前缀

14. 最长公共前缀 img { margin: auto; display: block } 点击上方&#xff0c;跳转至Leetcode 题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 示例 1&#xff1a; 输入&#xff1a;strs ["flowe…

一道有点仙的数位dp 方伯伯的商场之旅

link 大意&#xff1a; 思路&#xff1a; 先来考虑单个数字的情况 其实首先可以将题意稍微转化一下&#xff0c;就是移动一个石子的代价是其移动的距离。这样的话&#xff0c;显然我们的策略就是对于每一个石子&#xff0c;一次性将其移动到正确的位置&#xff0c;毕竟能一步…

Axure教程—选择器

本文将教大家如何用AXURE中的动态面板制作选择器 一、效果 预览地址&#xff1a;https://zhihp9.axshare.com 二、功能 用户点击选择框&#xff0c;可以显示下拉选择器&#xff0c;点击后选择对应项。 三、制作 1、选择框 拖入一个矩形&#xff0c;设置大小为16438&#xff…

macOS Ventura 13.4.1 (22F82) Boot ISO 原版可引导镜像下载

macOS Ventura 13.4.1 (22F82|22F2083) Boot ISO 原版可引导镜像下载 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Wind…

EMC学习笔记(六)优选布线层

EMC学习笔记&#xff08;六&#xff09;优选布线层 1. 表层与内层走线的比较1.1 微带线&#xff08;microsstrip&#xff09;1.2 带状线&#xff08;stripline&#xff09;1.3 微带线与带状线的比较 2.布线层的优先级别 对于时钟、高频、高速、小、弱信号而言&#xff0c;选择合…

React封装axios请求

1、前言 因为最近在进行老系统用新框架改造&#xff0c;正好用到了react&#xff0c;就顺便整理了一下react中对axios进行封装的相关知识点和步骤。 2、如何封装 可以参考一下chat gpt给出的回答。 我大概总结一下&#xff0c;其实就是使用axios.create创建一个axios的实例&…

基于座位预约管理系统的设计与实现

前言&#xff1a; 各位小伙伴儿们端午节快乐&#xff0c;本篇文章为大家带来一份基于ssm技术搭建的项目&#xff0c;正在学习这块技术的童靴们可以体验一下哦&#xff0c;在资源中可获取源码 ~ 以下正文开始&#xff1a; 文章目录 需求分析功能模块项目架构图首页部分Controll…

存储笔记 - 整理

文章目录 第一章 存储系统introlesson 1何为数据&#xff1f;类型与关系 lesson 2 存储系统环境lesson 1lesson 2 Disk Drive 数据保护 RAIDlesson 1 智能存储lesson 第二章 存储网络技术与虚拟化DAS 直连式存储与 SCSIlesson 直连存储lesson&#xff1a; SCSI简介summary SANl…

长尾关键词有什么作用?要怎么用?

长尾关键词很多的网站都会忽略其存在&#xff0c;其实你不要小看长尾关键词&#xff0c;他将带给网站的流量也是极其可观的&#xff0c;所说比不上那些重点关键词的流量&#xff0c;但是对提升网站的权重还是有着重要的作用。 长尾关键词有什么用&#xff1f;长尾关键词的3…

基于spss的多元统计分析 之 因子分析(4/8)

实验目的&#xff1a; 1&#xff0e;掌握因子分析的基本思想&#xff1b; 2&#xff0e;熟悉掌握SPSS软件进行因子分析的基本操作&#xff1b; 3&#xff0e;利用实验指导的实例数据&#xff0c;上机熟悉因子分析方法。 实验内容&#xff1a; 附表的数据来自一次对液晶电视的调…

English Learning - L3 作业打卡 Lesson7 Day48 2023.6.21 周三

English Learning - L3 作业打卡 Lesson7 Day48 2023.6.21 周三 引言&#x1f349;句1: I thought the worst was over until weeks later when I saw my new legs for the first time.成分划分弱读连读爆破语调 &#x1f349;句2: I didn’t know what to expect but I wasn‘…

【C++】 Qt-认识Qt

文章目录 Qt简介Qt建立工程准备建立控制台程序建立桌面窗口程序 Qt简介 Qt&#xff08;官方发音[kju:t]&#xff0c;同音cute&#xff09;是一个跨平台的C开发库&#xff0c;主要用来开发图形用户界面&#xff08;Graphical User Interface&#xff0c;GUI&#xff09;程序&am…

Android之 日历单选多选控件

一&#xff0c;效果图 1.1 单选 2.2 多选 二 实现思路 2.1 数据来源&#xff0c;利用原生日历Calendar&#xff0c;获取从本月开始的往后一年的日期&#xff0c;遍历月数添加全部天数据 private void initCalendarData() {Calendar calendar Calendar.getInstance();year …

Chrome(Manifest Version 3) 浏览器扩展插件基础教程

文章目录 一、简介二、核心介绍三、自定义页面背景色三、设置页面背景图&#xff08;web_accessible_resources&#xff09;四、设置徽章&#xff08;Badge&#xff09;五、桌面通知六、消息通信七、自定义右键菜单&#xff08;添加、更新、删除&#xff09;八、Omnibox九、浏览…