docker and kubectl commands notes

Jerry’s Notes
What’s next?
Published in
8 min readJan 23, 2019

記錄一下docker及kubectl常用的指令!

Docker是一個開放原始碼軟體專案,讓應用程式布署在軟體貨櫃下的工作可以自動化進行,藉此在Linux作業系統上,提供一個額外的軟體抽象層,以及作業系統層虛擬化的自動管理機制。

docker常用指令

#- 用個人帳號登入到 docker hub
/Users/jerry_kung# docker login — username=xxxx
#- 拉特定 docker image file 從 docker-hub
/Users/jerry_kung# docker pull xxxx/gemini-iptv-public
#- 指定要上傳到的docker-hub相關資訊
/Users/jerry_kung# docker tag centos xxxx/centos
#- 上傳特定docker image到docker-hub
/Users/jerry_kung# docker push <username>/<repo name>:<Tag name>
#- 下傳特定docker image
/Users/jerry_kung# docker pull <username>/<repo name>:<Tag name>
/Users/jerry_kung# docker pull cents
#- get information
/Users/jerry_kung# docker info
#- list images
/Users/jerry_kung# docker images
#- list container running status
/Users/jerry_kung# docker-machine ls
#- list container running status
/Users/jerry_kung# docker ps -a
#- stop | start | restart container
/Users/jerry_kung# docker start d1d4c1c36fe8
/Users/jerry_kung# docker ps -a
#- 刪除/停止執行特定container
/Users/jerry_kung# docker rm d1d4c1c36fe8
#- 查詢docker images資訊
# docker inspect <contain_id>
#- 打包docker image並搬到及匯入特定機器
#- Save Docker image as a tar file
$ docker save -o <path for generated tar file> <image name>
example: docker save -o myfile.tar centos:16
#- Restore Docker image from a tar file
$ docker load -i <path to image tar file>
example: docker load -i myfile.tar
#- Docker使用link建立容器之間的連接
$ docker image|grep hzc
hzc/mysql_client latest 62cfe52e02bf 2 days ago 289 MB
hzc/mysql_server latest 83c64aba0805 2 days ago 377.9 MB
#- Mysql DB running as docker
$ docker run -d -P — name=mysql_server hzc/mysql_server
#- Website connection to mysql DB
$ docker run — name=mysql_client1 — link=mysql_server:db -i -t hzc/mysql_client mysql -h db -uroot -p1234
#- 啟動所有的 Docker Container 指令如下
$ docker-compose up -d
#- 查看 Docker Container 的執行狀態
$ docker-compose ps
#- 看執行的 log 可以使用以下的指令
$ docker-compose logs
#- 停止 docker-compose 執行的所有 Container 可以使用以下的指令
$ docker-compose stop
#- 刪除 docker-compose 的所有 Container 可以使用以下的指令
$ docker-compose rm

kubectl 是Kubernetes操作指令集,而Kubernetes是用於自動部署、擴展和管理容器化應用程式的開源系統。

kubectl常用指令

#- 取得node及namespaces list
$ kubectl get csr
$ kubectl get node
$ kubectl get namespaces
#- 取得 Kubernetes Cluster 中所有正在運行的 Pods 的資訊
$ kubectl get pods — all-namespaces -o wide
$ kubectl get pods [pod name]
#- 如果加上 — show-all,則會顯示所有 Pods
$ kubectl get pods — show-all
#- 取得某一個 Pod 的詳細資料
$ kubectl describe <pod>
#- 取得某一個 Pod 的log記錄
$ kubectl logs -f <pod>
#- 將某一 Pod 中指定的 port number expose 出來讓外部服務存取(建立一個新的 Service 物件)
$ kubectl expose pod <pod> — port=<port> — name=<service-name>
#- 將某一 Pod 中指定的 port number mapping 到本機端的某一特定 port number
$ kubectl port-forward <pod> <external-port>:<pod-port>
#- 當一個 container 起來之後,有時希望能進到 container 內部去看 logs
$ kubectl attach <pod> -i -c <container>
$ kubectl attach alpine -i
#- exec -ti 切換至該container內 -t TTY
$ kubectl exec [-it] <pod name> [-c CONTAINER] — COMMAND [args…]
$ kubectl exec -ti <your-pod-name> bash
$ docker exec -ti <your-container-name> /bin/sh
#- 可以對 Pod 下一個內部指令
$ kubectl exec <pod> — <command>
# kubectl exec apiserver ls /
# kubectl exec apiserver env
#- 設定API連線
$ cp /etc/kubernetes/admin.conf ~/.kube/config
$ watch netstat -ntlp
#- 可以新增 Pod 的 Labels
$ kubectl label pods <pod> <label-key>=<label-value>
$ kubectl label pods my-pod version=latest
pod “my-pod” labeled
#- 查看目前有哪些 labels
# kubectl get pods — show-labels
NAME READY STATUS RESTARTS AGE LABELS
my-pod 1/1 Running 0 36m app=webserver
#- 調整service replicas 的數字 scale
$ kubectl scale — replicas=4 xxxx
#- 透過 kubectl expose 的指令,去做Port mapping
$ kubectl expose deployment tomcat-deployment — type=NodePort
$ kubectl expose deployment tomcat-deployment — type=LoadBalancer — port=8080 — target-port=8080 — name tomcat-load-balancer
$ kubectl describe services tomcat-load-balancer
#- 查詢Deployment的指令
$ kubectl get deployments
$ kubectl rollout status
$ kubectl set image
$ kubectl rollout history
#- Master/Worker Node進入或離開維設模式
$ kubectl drain {node_name}
# kubectl drain minikube — force
node/minikube cordoned
#- Master/Worker Node離開維設模式
$ kubectl uncordon {node_name}
# kubectl uncordon minikube
node/minikube uncordoned

--

--

Jerry’s Notes
What’s next?

An cloud support engineer focus on troubleshooting with customer reported issue ,and cloud solution architecture.