下面是關于Docker和Kubernetes的基礎語法學習資料,包括一些關鍵概念和示例代碼。
Docker 基礎語法
1. 安裝 Docker
首先,你需要安裝 Docker。以下是不同操作系統上的安裝指南:
-
Windows/Mac: 下載并安裝 Docker Desktop。
-
Linux: 根據你的發行版使用包管理器安裝 Docker。例如,在 Ubuntu 上:
bash
-
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
2. 基本命令
-
啟動容器
bash
docker run -it ubuntu bash
-
這條命令會下載一個 Ubuntu 鏡像并在其中啟動一個交互式的 Bash shell。
-
列出正在運行的容器
bash
docker ps
?列出所有容器(包括停止的):
bash
docker ps -a
停止容器
bash
docker stop <container_id>
移除容器
bash
docker rm <container_id>
構建鏡像:
創建一個 Dockerfile
文件,然后使用以下命令構建鏡像
# Dockerfile
FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl
CMD ["echo", "Hello, Docker!"]
構建鏡像:
bash
docker build -t my-ubuntu-image .
運行自定義鏡像
bash
docker run my-ubuntu-image
查看鏡像列表
bash
docker images
推送鏡像到 Docker Hub:
先登錄 Docker Hub
bash
docker login
然后標記鏡像:
bash
docker tag my-ubuntu-image your_dockerhub_username/my-ubuntu-image
最后推送鏡像:
bash
docker push your_dockerhub_username/my-ubuntu-image
Kubernetes (K8s) 基礎語法
1. 安裝 Minikube 或 Kind
為了在本地測試 Kubernetes,你可以使用 Minikube 或 Kind。
-
Minikube:
?下載并安裝 Minikube。
?啟動 Minikube
bash
minikube start
Kind:
下載并安裝 Kind。
創建集群
bash
kind create cluster
2. 基本命令
-
檢查集群狀態:
bash
kubectl cluster-info
獲取節點信息
bash
kubectl get nodes
部署應用:
使用 YAML 文件部署一個簡單的 Nginx 應用
yaml
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80
應用部署文件:
bash
kubectl apply -f nginx-deployment.yaml
查看 Pod 狀態
kubectl get pods
暴露服務:
?創建一個 Service 來暴露 Nginx 應用
yaml
# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:name: nginx-service
spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80type: LoadBalancer
應用服務文件:
bash
kubectl apply -f nginx-service.yaml
訪問服務:
獲取服務 IP 地址
bash
kubectl get services
訪問服務:
bash
curl http://<service_ip>:80
刪除資源:
刪除 Deployment 和 Service
bash
kubectl delete deployment nginx-deployment
kubectl delete service nginx-service
示例:完整的 Docker 和 K8s 流程
1. 創建一個簡單的 Web 應用
創建一個簡單的 Flask 應用:
# app.py
from flask import Flask
app = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, Kubernetes!'if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
創建 requirements.txt
文件:
Flask==2.0.1
2. 創建 Dockerfile
# Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir -r requirements.txt
CMD ["python", "app.py"]
3. 構建并推送 Docker 鏡像
bash
docker build -t your_dockerhub_username/flask-app:v1 .
docker login
docker push your_dockerhub_username/flask-app:v1
4. 創建 Kubernetes 部署文件
yaml
# flask-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: flask-deployment
spec:replicas: 3selector:matchLabels:app: flasktemplate:metadata:labels:app: flaskspec:containers:- name: flask-containerimage: your_dockerhub_username/flask-app:v1ports:- containerPort: 5000
6. 部署到 Kubernetes
bash
kubectl apply -f flask-deployment.yaml
kubectl apply -f flask-service.yaml
7. 訪問服務
bash
kubectl get services
curl http://<service_ip>:80
通過以上步驟,你已經完成了從開發、打包、部署到訪問整個流程的學習。希望這些內容能幫助你更好地理解和掌握 Docker 和 Kubernetes 的基礎語法!