Docker常用的命令记录
Docker&k8s常用的命令记录
·
Docker&k8s常用的命令记录
一、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 .
- dockerfile示例
cat > my-multi-process-container-dockerfile << 'EOF'
FROM new_docker_name:latest
RUN chown -R postgres:postgres /opt/softDir/start-services.sh
# 指定运行的用户
USER postgres
EXPOSE 5432
CMD ["/opt/softDir/start-services.sh"]
EOF
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"
# 示例:docker中将onlyOffice中的缓存清除
docker exec ad9753fb0dd3 /bin/sh -c "cd /var/lib/onlyoffice/documentserver/App_Data/cache/files/data && find . -maxdepth 1 -mtime +7 -type d | xargs rm -rf"
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
18.设置Docker容器的时区
如果容器如果没有启动,可以在运行命令里添加 -e TZ=Asia/Shanghai 字段
docker run -e TZ=Asia/Shanghai
如果容器已经启动,在宿主机上执行以下命令
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID或名称:/etc/localtime
参考文章:https://blog.csdn.net/qq_58389625/article/details/132796729
19.docker中网络创建与删除
- 创建 Bridge 网络
Bridge 网络是默认网络,它允许容器相互通信并且能够与外部网络连接。
# 创建一个自定义的 bridge 网络
docker network create my_bridge_network
- 列出网络
docker network ls
- 将容器连接到网络
# 启动容器时指定网络
docker run -itd --name centos --network my_bridge_network --privileged=true centos:centos7.9.2009 /bin/bash
docker run -itd --name ubuntu --network my_bridge_network --privileged=true ubuntu:22.04 /bin/bash
# 测试
docker exec -it centos ping ubuntu
# 运行时将现有容器连接到网络
docker network connect my_bridge_network my_container
示例:
docker network connect my_bridge_network centos
docker network connect my_bridge_network ubuntu
- 将容器从网络断开
如果需要,可以将容器从网络断开。
docker network disconnect my_bridge_network my_container
- 删除网络
docker network rm my_bridge_network
- 在不同主机上
通过端口映射和主机网络通信
# 在主机 A 上运行一个 web 服务容器,并将其端口映射到宿主机端口
docker run -d --name webserver -p 8080:80 nginx
# 在主机 B 上,运行一个容器,通过主机 A 的 IP 地址和映射的端口访问 web 服务:
docker run -it busybox
wget http://<hostA-IP>:8080
这种方法虽然可以实现基本的通信,但不如 Docker 网络解决方案那么灵活和安全。
20.docker镜像打tag
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
# 示例
docker tag sendi_postgresql:1.0 192.168.56.1:6666/sendi_postgresql:1.0
21.查看docker镜像是什么架构
docker image inspect <镜像名或镜像ID>
二、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
更多推荐
已为社区贡献3条内容
所有评论(0)