概述

本部分介绍Linux系统中用于DevOps、容器化、云原生应用部署和管理的命令。这些命令是现代软件开发和运维的重要工具,用于自动化部署、容器管理、微服务架构和云平台集成。


1. docker - 容器管理

命令语法

docker [选项] 命令 [参数]

功能说明

Docker容器管理工具,用于构建、运行和管理容器。

常用参数

  • run: 运行容器
  • build: 构建镜像
  • images: 列出镜像
  • ps: 列出容器
  • exec: 在容器中执行命令
  • logs: 查看容器日志

实际案例

# 运行容器
docker run -d -p 8080:80 nginx

# 构建镜像
docker build -t myapp:latest .

# 列出镜像
docker images

# 列出运行中的容器
docker ps

# 列出所有容器
docker ps -a

# 在容器中执行命令
docker exec -it container_name bash

# 查看容器日志
docker logs container_name

# 停止容器
docker stop container_name

# 删除容器
docker rm container_name

# 删除镜像
docker rmi image_name

执行结果

$ docker run -d -p 8080:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
a1b2c3d4e5f6

详细解析

Docker是最流行的容器化平台,提供轻量级的虚拟化解决方案。


2. docker-compose - 多容器编排

命令语法

docker-compose [选项] 命令 [参数]

功能说明

Docker Compose用于定义和运行多容器Docker应用。

常用参数

  • up: 启动服务
  • down: 停止服务
  • build: 构建服务
  • logs: 查看日志
  • ps: 列出服务

实际案例

# 启动服务
docker-compose up

# 后台启动服务
docker-compose up -d

# 停止服务
docker-compose down

# 构建服务
docker-compose build

# 查看日志
docker-compose logs

# 列出服务
docker-compose ps

# 重启服务
docker-compose restart

# 扩展服务
docker-compose up --scale web=3

执行结果

$ docker-compose up -d
Creating network "myapp_default" with the default driver
Creating myapp_web_1 ... done
Creating myapp_db_1  ... done

详细解析

Docker Compose通过YAML文件定义多容器应用,简化了复杂应用的部署。


3. kubectl - K8s集群管理

命令语法

kubectl [选项] 命令 [资源类型] [资源名称]

功能说明

Kubernetes命令行工具,用于管理K8s集群。

常用参数

  • get: 获取资源
  • create: 创建资源
  • delete: 删除资源
  • apply: 应用配置
  • describe: 描述资源
  • logs: 查看日志

实际案例

# 获取节点
kubectl get nodes

# 获取Pod
kubectl get pods

# 获取服务
kubectl get services

# 创建部署
kubectl create deployment nginx --image=nginx

# 应用配置
kubectl apply -f deployment.yaml

# 描述Pod
kubectl describe pod pod_name

# 查看Pod日志
kubectl logs pod_name

# 进入Pod
kubectl exec -it pod_name -- bash

# 删除资源
kubectl delete deployment nginx

执行结果

$ kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
nginx-7c87f569d-abc123   1/1     Running   0          2m

详细解析

kubectl是Kubernetes的核心管理工具,提供完整的集群管理功能。


4. helm - 包管理器

命令语法

helm [选项] 命令 [参数]

功能说明

Kubernetes包管理器,用于管理K8s应用。

常用参数

  • install: 安装Chart
  • uninstall: 卸载Chart
  • list: 列出安装的Chart
  • upgrade: 升级Chart
  • status: 查看状态

实际案例

# 安装Chart
helm install my-release bitnami/nginx

# 列出安装的Chart
helm list

# 查看Chart状态
helm status my-release

# 升级Chart
helm upgrade my-release bitnami/nginx

# 卸载Chart
helm uninstall my-release

# 搜索Chart
helm search repo nginx

# 添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami

# 更新仓库
helm repo update

执行结果

$ helm install my-release bitnami/nginx
NAME: my-release
LAST DEPLOYED: Sat Dec 15 10:30:00 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1

详细解析

Helm简化了Kubernetes应用的部署和管理,使用Chart打包应用。


5. terraform - 基础设施即代码

命令语法

terraform [选项] 命令 [参数]

功能说明

基础设施即代码工具,用于自动化基础设施管理。

常用参数

  • init: 初始化
  • plan: 计划变更
  • apply: 应用变更
  • destroy: 销毁资源
  • show: 显示状态

实际案例

# 初始化Terraform
terraform init

# 查看计划
terraform plan

# 应用变更
terraform apply

# 销毁资源
terraform destroy

# 显示状态
terraform show

# 格式化代码
terraform fmt

# 验证配置
terraform validate

# 输出变量
terraform output

执行结果

$ terraform plan
Plan: 2 to add, 0 to change, 0 to destroy.

详细解析

Terraform使用声明式配置管理基础设施,支持多云平台。


6. ansible - 自动化配置

命令语法

ansible [选项] 主机模式 命令

功能说明

自动化配置管理和应用部署工具。

常用参数

  • -i: 指定清单文件
  • -m: 指定模块
  • -a: 指定参数
  • -u: 指定用户
  • -k: 询问密码

实际案例

# 执行命令
ansible all -m ping

# 安装软件包
ansible all -m apt -a "name=nginx state=present"

# 复制文件
ansible all -m copy -a "src=file.txt dest=/tmp/file.txt"

# 执行Playbook
ansible-playbook playbook.yml

# 检查语法
ansible-playbook --syntax-check playbook.yml

# 干运行
ansible-playbook --check playbook.yml

# 指定主机
ansible webservers -m service -a "name=nginx state=started"

执行结果

$ ansible all -m ping
server1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

详细解析

Ansible使用SSH连接管理远程主机,无需在目标主机安装代理。


7. jenkins - 持续集成

命令语法

jenkins [选项] 命令

功能说明

Jenkins持续集成服务器管理。

常用参数

  • start: 启动Jenkins
  • stop: 停止Jenkins
  • restart: 重启Jenkins
  • status: 查看状态

实际案例

# 启动Jenkins
systemctl start jenkins

# 停止Jenkins
systemctl stop jenkins

# 重启Jenkins
systemctl restart jenkins

# 查看状态
systemctl status jenkins

# 查看日志
journalctl -u jenkins

# 启用开机自启
systemctl enable jenkins

# 禁用开机自启
systemctl disable jenkins

执行结果

$ systemctl status jenkins
● jenkins.service - LSB: Start Jenkins at boot time
   Loaded: loaded (/etc/init.d/jenkins; generated)
   Active: active (running) since Sat 2023-12-15 10:30:00 UTC; 2min 30s ago

详细解析

Jenkins是流行的持续集成工具,支持自动化构建、测试和部署。


8. git - 版本控制

命令语法

git [选项] 命令 [参数]

功能说明

分布式版本控制系统。

常用参数

  • clone: 克隆仓库
  • add: 添加文件
  • commit: 提交更改
  • push: 推送更改
  • pull: 拉取更改
  • branch: 分支管理

实际案例

# 克隆仓库
git clone https://github.com/user/repo.git

# 添加文件
git add file.txt

# 提交更改
git commit -m "Add new feature"

# 推送更改
git push origin main

# 拉取更改
git pull origin main

# 创建分支
git branch feature-branch

# 切换分支
git checkout feature-branch

# 合并分支
git merge feature-branch

# 查看状态
git status

# 查看日志
git log

执行结果

$ git status
On branch main
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        new file:   file.txt

详细解析

Git是最流行的版本控制系统,支持分布式开发和协作。


9. maven - 项目管理

命令语法

mvn [选项] 目标

功能说明

Java项目管理和构建工具。

常用参数

  • compile: 编译项目
  • test: 运行测试
  • package: 打包项目
  • install: 安装到本地仓库
  • clean: 清理项目

实际案例

# 编译项目
mvn compile

# 运行测试
mvn test

# 打包项目
mvn package

# 安装到本地仓库
mvn install

# 清理项目
mvn clean

# 清理并编译
mvn clean compile

# 跳过测试打包
mvn package -DskipTests

# 指定配置文件
mvn package -P production

执行结果

$ mvn package
[INFO] Scanning for projects...
[INFO] Building myapp 1.0.0
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ myapp ---
[INFO] Building jar: /path/to/target/myapp-1.0.0.jar
[INFO] BUILD SUCCESS

详细解析

Maven使用POM文件管理项目依赖和构建过程。


10. gradle - 构建工具

命令语法

gradle [选项] 任务

功能说明

现代构建自动化工具。

常用参数

  • build: 构建项目
  • test: 运行测试
  • clean: 清理项目
  • run: 运行应用
  • dependencies: 显示依赖

实际案例

# 构建项目
gradle build

# 运行测试
gradle test

# 清理项目
gradle clean

# 运行应用
gradle run

# 显示依赖
gradle dependencies

# 构建并运行测试
gradle build test

# 并行构建
gradle build --parallel

# 构建缓存
gradle build --build-cache

执行结果

$ gradle build
> Task :compileJava
> Task :processResources
> Task :classes
> Task :jar
> Task :assemble
> Task :compileTestJava
> Task :processTestResources
> Task :testClasses
> Task :test
> Task :check
> Task :build

BUILD SUCCESSFUL in 2s

详细解析

Gradle使用Groovy DSL定义构建脚本,支持增量构建。


11. npm - Node.js包管理

命令语法

npm [选项] 命令 [参数]

功能说明

Node.js包管理器。

常用参数

  • install: 安装包
  • start: 启动应用
  • test: 运行测试
  • build: 构建项目
  • publish: 发布包

实际案例

# 安装依赖
npm install

# 安装包
npm install express

# 全局安装
npm install -g nodemon

# 启动应用
npm start

# 运行测试
npm test

# 构建项目
npm run build

# 发布包
npm publish

# 查看已安装包
npm list

# 更新包
npm update

执行结果

$ npm install express
npm notice created a lockfile as package-lock.json
npm WARN myapp@1.0.0 No description
npm WARN myapp@1.0.0 No repository field.

+ express@4.18.2
added 1 package in 2s

详细解析

npm是Node.js的包管理器,管理项目依赖和脚本。


12. pip - Python包管理

命令语法

pip [选项] 命令 [参数]

功能说明

Python包管理器。

常用参数

  • install: 安装包
  • uninstall: 卸载包
  • list: 列出包
  • show: 显示包信息
  • freeze: 冻结依赖

实际案例

# 安装包
pip install requests

# 安装指定版本
pip install requests==2.28.0

# 从requirements文件安装
pip install -r requirements.txt

# 卸载包
pip uninstall requests

# 列出已安装包
pip list

# 显示包信息
pip show requests

# 冻结依赖
pip freeze > requirements.txt

# 升级包
pip install --upgrade requests

# 安装开发依赖
pip install -e .

执行结果

$ pip install requests
Collecting requests
  Downloading requests-2.28.0-py2.py3-none-any.whl (62 kB)
Installing collected packages: requests
Successfully installed requests-2.28.0

详细解析

pip是Python的包管理器,管理Python包和依赖。


13. docker-machine - 机器管理

命令语法

docker-machine [选项] 命令 [参数]

功能说明

Docker Machine用于管理Docker主机。

常用参数

  • create: 创建机器
  • ls: 列出机器
  • start: 启动机器
  • stop: 停止机器
  • rm: 删除机器

实际案例

# 创建机器
docker-machine create --driver virtualbox myvm

# 列出机器
docker-machine ls

# 启动机器
docker-machine start myvm

# 停止机器
docker-machine stop myvm

# 删除机器
docker-machine rm myvm

# 获取环境变量
docker-machine env myvm

# 连接到机器
docker-machine ssh myvm

# 查看机器状态
docker-machine status myvm

执行结果

$ docker-machine ls
NAME   ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER     ERRORS
myvm   -        virtualbox   Running   tcp://192.168.99.100:2376           v20.10.0

详细解析

Docker Machine简化了Docker主机的创建和管理。


4. docker-swarm - 集群管理

命令语法

docker swarm [选项] 命令 [参数]

功能说明

Docker Swarm集群管理。

常用参数

  • init: 初始化集群
  • join: 加入集群
  • leave: 离开集群
  • update: 更新集群

实际案例

# 初始化集群
docker swarm init

# 加入集群
docker swarm join --token SWMTKN-1-xxx 192.168.1.100:2377

# 离开集群
docker swarm leave

# 更新集群
docker swarm update --autolock

# 查看集群信息
docker info

# 查看节点
docker node ls

# 创建服务
docker service create --name web nginx

# 扩展服务
docker service scale web=3

执行结果

$ docker swarm init
Swarm initialized: current node (abc123) is now a manager.

To add a worker to this swarm, run the following command:
    docker swarm join --token SWMTKN-1-xxx 192.168.1.100:2377

详细解析

Docker Swarm提供原生集群功能,简化容器编排。


15. minikube - 本地Kubernetes

命令语法

minikube [选项] 命令 [参数]

功能说明

本地Kubernetes集群管理。

常用参数

  • start: 启动集群
  • stop: 停止集群
  • status: 查看状态
  • delete: 删除集群

实际案例

# 启动集群
minikube start

# 停止集群
minikube stop

# 查看状态
minikube status

# 删除集群
minikube delete

# 查看服务
minikube service list

# 打开仪表板
minikube dashboard

# 查看日志
minikube logs

# 进入节点
minikube ssh

执行结果

$ minikube start
😄  minikube v1.28.0 on Ubuntu 20.04
✨  Using the docker driver based on existing profile
🎯  Starting control plane node minikube in cluster minikube
🚀  Booting up node, this may take a few minutes ...

详细解析

minikube提供本地Kubernetes环境,用于开发和测试。


16. kind - Kubernetes in Docker

命令语法

kind [选项] 命令 [参数]

功能说明

使用Docker容器运行Kubernetes。

常用参数

  • create: 创建集群
  • delete: 删除集群
  • get: 获取信息
  • load: 加载镜像

实际案例

# 创建集群
kind create cluster

# 创建命名集群
kind create cluster --name mycluster

# 删除集群
kind delete cluster

# 删除命名集群
kind delete cluster --name mycluster

# 获取集群
kind get clusters

# 加载镜像
kind load docker-image myapp:latest

# 创建配置文件
kind create cluster --config cluster.yaml

执行结果

$ kind create cluster
Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.25.3) 🖼
 ✓ Preparing nodes 📦
 ✓ Writing configuration 📝
 ✓ Starting control-plane 🕹️
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"

详细解析

kind使用Docker容器运行Kubernetes,快速创建测试环境。


17. k3s - 轻量级Kubernetes

命令语法

k3s [选项] 命令 [参数]

功能说明

轻量级Kubernetes发行版。

常用参数

  • server: 启动服务器
  • agent: 启动代理
  • kubectl: 执行kubectl命令
  • uninstall: 卸载k3s

实际案例

# 安装k3s服务器
curl -sfL https://get.k3s.io | sh -

# 安装k3s代理
curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -

# 使用kubectl
k3s kubectl get nodes

# 卸载k3s
/usr/local/bin/k3s-uninstall.sh

# 启动服务器
k3s server

# 启动代理
k3s agent --server https://myserver:6443 --token mytoken

执行结果

$ k3s kubectl get nodes
NAME               STATUS   ROLES                  AGE   VERSION
k3s-server         Ready    control-plane,master   2m    v1.25.3+k3s1

详细解析

k3s是轻量级Kubernetes,适合边缘计算和资源受限环境。


18. istio - 服务网格

命令语法

istioctl [选项] 命令 [参数]

功能说明

Istio服务网格管理工具。

常用参数

  • install: 安装Istio
  • uninstall: 卸载Istio
  • version: 查看版本
  • proxy-config: 代理配置

实际案例

# 安装Istio
istioctl install --set values.defaultRevision=default

# 卸载Istio
istioctl uninstall --purge

# 查看版本
istioctl version

# 注入代理
istioctl kube-inject -f deployment.yaml

# 查看代理配置
istioctl proxy-config cluster pod-name

# 查看服务
istioctl proxy-config endpoints pod-name

# 查看路由
istioctl proxy-config routes pod-name

执行结果

$ istioctl install --set values.defaultRevision=default
This will install the Istio 1.16.0 default profile with ["Istio core" "Istiod" "Ingress gateways"] components into the cluster. Proceed? (y/N) y
✔ Istio core installed
✔ Istiod installed
✔ Ingress gateways installed
✔ Installation complete

详细解析

Istio提供服务网格功能,包括流量管理、安全、可观测性。


19. prometheus - 监控系统

命令语法

prometheus [选项]

功能说明

Prometheus监控系统。

常用参数

  • --config.file: 配置文件
  • --storage.tsdb.path: 存储路径
  • --web.listen-address: 监听地址

实际案例

# 启动Prometheus
prometheus --config.file=prometheus.yml

# 指定存储路径
prometheus --storage.tsdb.path=/data/prometheus

# 指定监听地址
prometheus --web.listen-address=0.0.0.0:9090

# 使用systemd管理
systemctl start prometheus

# 查看状态
systemctl status prometheus

# 查看日志
journalctl -u prometheus

执行结果

$ prometheus --config.file=prometheus.yml
level=info ts=2023-12-15T10:30:00.000Z caller=main.go:300 msg="Starting Prometheus Server"
level=info ts=2023-12-15T10:30:00.000Z caller=main.go:301 version="2.40.0"

详细解析

Prometheus是开源的监控和告警系统,使用时间序列数据库。


20. grafana - 可视化

命令语法

grafana-server [选项]

功能说明

Grafana数据可视化平台。

常用参数

  • --config: 配置文件
  • --homepath: 主目录
  • --pidfile: PID文件

实际案例

# 启动Grafana
grafana-server --config=/etc/grafana/grafana.ini

# 指定主目录
grafana-server --homepath=/usr/share/grafana

# 使用systemd管理
systemctl start grafana-server

# 查看状态
systemctl status grafana-server

# 查看日志
journalctl -u grafana-server

# 启用开机自启
systemctl enable grafana-server

执行结果

$ systemctl status grafana-server
● grafana-server.service - Grafana instance
   Loaded: loaded (/lib/systemd/system/grafana-server.service; enabled)
   Active: active (running) since Sat 2023-12-15 10:30:00 UTC; 2min 30s ago

详细解析

Grafana提供丰富的数据可视化功能,支持多种数据源。


总结

本部分介绍了Linux系统中用于DevOps和云原生的核心命令。这些命令是现代软件开发和运维的重要工具。

主要命令分类:

  1. 容器化:docker、docker-compose、docker-machine、docker-swarm
  2. Kubernetes:kubectl、helm、minikube、kind、k3s
  3. 基础设施即代码:terraform、ansible
  4. 持续集成:jenkins、git、maven、gradle
  5. 包管理:npm、pip
  6. 服务网格:istio
  7. 监控:prometheus、grafana

使用建议:

  1. 使用Docker进行容器化应用开发
  2. 使用Kubernetes进行容器编排
  3. 使用Terraform管理基础设施
  4. 使用Ansible进行配置管理
  5. 使用Jenkins实现持续集成
  6. 使用Git进行版本控制
  7. 使用Prometheus和Grafana进行监控
  8. 使用Istio实现服务网格

这些命令为现代DevOps和云原生应用提供了完整的工具链。

更多推荐