Docker&k8s常用的命令记录

  • 一、Docker命令
  • 1.查看docker版本及信息
  • 2.docker命令帮助
  • 3.镜像仓库命令
  • 4.查看镜像列表
  • 5.删除镜像
  • 6.搜索镜像
  • 7.通过dockerfile构建镜像
  • 8.通过后台运行镜像
  • 9.进入运行中容器
  • 10.在主机上操作执行容器中的shell命令
  • 11.主机与容器中文件互相拷贝
  • 12.查看日志
  • 13.将容器重新打包成镜像
  • 14.删除容器
  • 15.挂载目录并启动容器
  • 16.启动停止及重启容器
  • 17.导出镜像到文件
  • 18.从文件导入镜像
  • 二、K8s命令
  • 1.查看所有的nodes
  • 2.查看所有的pods
  • 3.查看所有的资源
  • 4.帮助命令
  • 5.查看版本信息
  • 6.查看POD运行日志
  • 7.删除资源
  • 8.扩容pod数量
  • 9.升级镜像
  • 10.自动伸缩相关
  • 11.通过文件部署
  • 12.通过文件删除部署
  • 13.进入k8s容器pod内部
  • 14.执行容器pod中的shell命令
  • 15.新建命名空间



一、Docker命令

1.查看docker版本及信息

docker version
docker info

2.docker命令帮助

docker --help

3.镜像仓库命令

以nexus私库镜像仓库为例,仓库地址如:192.168.56.1:5000。

##登陆
docker login 192.168.56.1:5000
##退出
docker logout 192.168.56.1:5000
##推送镜像到私库
docker push 192.168.56.1:5000/liu:latest
##下载镜像到本地
docker pull 192.168.56.1:5000/liu:latest

4.查看镜像列表

docker images
docker images -a

5.删除镜像

docker rmi 镜像名称/镜像ID
docker rmi c6b0863bc64f

6.搜索镜像

docker search 镜像名
docker search mysql

7.通过dockerfile构建镜像

#docker build -t 镜像名称 -f dockerFile名称 .
docker build -t sendi_kkfileview:latest -f Dockerfile_kkfileView .

8.通过后台运行镜像

####其中-p指定端映射
docker run -itd --privileged=true -p 8012:8012 sendi_kkfileview:latest /usr/sbin/init

#### --name指定名称
docker run -itd --name sendi_kkfileview --privileged=true -p 8012:8012 sendi_kkfileview:latest /usr/sbin/init

9.进入运行中容器

##c6b0863bc64f为容器id
docker exec -it fe4ccf746211 /bin/bash

10.在主机上操作执行容器中的shell命令

docker exec fe4ccf746211 /bin/sh -c "df -hl"
docker exec fe4ccf746211 /bin/sh -c "tail -f /opt/kkFileView-4.0.0/log/kkFileView.log"

11.主机与容器中文件互相拷贝

Usage:  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
        docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem

主机中拷贝文件进容器:

docker cp startup.sh fe4ccf746211:/opt/kkFileView-4.0.0/bin/startup.sh

容器中文件拷贝到主机:

docker cp fe4ccf746211:/opt/kkFileView-4.0.0/bin/startup.sh /root/startup.sh

12.查看日志

## Usage:  docker logs [OPTIONS] CONTAINER
Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
  -n, --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)

##示例:
docker logs -f 042d30ec0500

13.将容器重新打包成镜像

有时我们需要基于运行中的容器,进行一些修改,比如增加一些文件进行,修改一些配置等,修改后的容器可以重新打包成镜像

Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
  -a, --author string    Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
  -c, --change list      Apply Dockerfile instruction to the created image
  -m, --message string   Commit message
  -p, --pause            Pause container during commit (default true)

##示例:
docker commit -a "liu" -m "sendi_heketi" 2741ea603980  sendi_heketi:latest

14.删除容器

Usage:  docker rm [OPTIONS] CONTAINER [CONTAINER...]
Remove one or more containers
Options:
  -f, --force     Force the removal of a running container (uses SIGKILL)
  -l, --link      Remove the specified link
  -v, --volumes   Remove anonymous volumes associated with the container

##示例:
docker rm c6b0863bc64f

15.挂载目录并启动容器

使用-v进行目录的挂载

docker run -v /home/data/mysqldata:/var/lib/mysql --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 13306:3306 -d mysql:5.6

16.启动停止及重启容器

docker start c6b0863bc64f
docker stop c6b0863bc64f
docker restart c6b0863bc64f

17.导出镜像到文件

docker save -o sendi_kkfileview.tar sendi_kkfileview:latest

18.从文件导入镜像

docker load -i sendi_kkfileview.tar

二、K8s命令

1.查看所有的nodes

#l查看节点状态信息
kubectl get nodes
kubectl get nodes -o wide

2.查看所有的pods

#l查看所有命名空间下的pods
kubectl get pods --all-namespaces

#kubectl get pods -n 命名空间
kubectl get pods -n liutest

#l可以查到更多信息(pod部署在哪个node上)
kubectl get pods -n liutest -o wide

3.查看所有的资源

查看所有的资源信息,包含pod、service、deployment、statefulset、replicaset等

#l查看所有
kubectl get all -n gzyxgoldcard -o wide

#l查看service
kubectl get svc --all-namespaces

#l查看deployment
kubectl get deployment --all-namespaces

#l查看资源描述
#kubectl describe 资源类型 资源名称 -n 命名空间
#examples:
kubectl describe namespace gzyxgoldcard 
kubectl describe pod goldcardsystem-67ddbc47cb-fswvx  -n gzyxgoldcard

4.帮助命令

帮助命令,可以显示出kubectl所有支持的命令摘要集合,

kubectl help

5.查看版本信息

kubectl version

6.查看POD运行日志

###
### kubectl logs pod名称 -n 命名空间
kubectl logs goldcardsystem-67ddbc47cb-fswvx -n gzyxgoldcard
kubectl logs -f goldcardsystem-67ddbc47cb-fswvx -n gzyxgoldcard

7.删除资源

#kubectl delete 资源类型 资源名称 -n 命令空间
#示例
kubectl delete pod goldcardsystem-67ddbc47cb-fswvx -n gzyxgoldcard
kubectl delete

8.扩容pod数量

kubectl scale deployment nginx --replicas=2 -n microservice

9.升级镜像

kubectl set image deployment nginx nginx=nginx:alpine -n microservice

10.自动伸缩相关

kubectl autoscale deployment nginx-c -n microservice --max=10 --cpu-percent=10 --min=1
kubectl get hpa -n microservice

11.通过文件部署

#kubectl apply -f 部署文件
示例:
kubectl apply -f mysql-deployment.yaml

12.通过文件删除部署

#kubectl delete -f 部署文件
kubectl delete -f mysql-deployment.yaml

13.进入k8s容器pod内部

#kubectl exec -it pod名称 -n 命令空间 -- /bin/bash
#examples,示例
kubectl exec -it goldcardsystem-67ddbc47cb-fswvx -n gzyxgoldcard -- /bin/bash

14.执行容器pod中的shell命令

#kubectl exec -it pod名称 -n 命令空间 -- shell命令
kubectl exec -it goldcardsystem-67ddbc47cb-fswvx -n gzyxgoldcard -- ls -hl

15.新建命名空间

#kubectl create namespace 命名空间名称
#examples,示例:
kubectl create namespace liutest