当前位置: 首页 > news >正文

docker 常见命令使用记录

1. swarm 集群

1. 集群创建
#  创建集群管理节点,  --advertise-addr  指定节点管理通信地址,--data-path-addr 指定容器通信地址
docker swarm init --advertise-addr 1.14.138.35 --data-path-addr 1.14.138.35#  --advertise-addr  指明当前work节点的通信地址,如果当前集群机器是内网的话,各个机器之间可以直接进行通信的话,就不需要
#  如果当前服务器集群不是在内网中的话就需要指明,否则,work节点加入集群的时候是按照eth0网卡的ip地址进行加入,这样就无法进行通信
docker swarm join --token SWMTKN-1--aqjja2f6n8uilutv5udr0gq4e 1.14.138.35:2377  --advertise-addr 120.78.30.163
2. 集群网络创建
# --driver 网络类型,默认有 overlay、bridge、host 三种,overlay 是docker swarm 中的默认网络驱动,
# 可以让各个节点中的容器进行跨主机、跨容器进行网络通信,还可以使用容器名称进行dns服务发现等功能
# --attachable  配置网络名称,想要容器进行跨主机、跨容器进行网络通信的话,在启动容器的时候需要指明适应的网络,
# 一个容器可以使用多个网络驱动
docker network create --driver overlay --attachable base_service_database-net # 查看 docker 网络列表
docker network ls

2 集群config配置

在docker swarm 集群中,当集群内的容器需要额外自定义的配置文件的时候,并且这个容器是global 全局运行的,每当加入一个work 节点的时候,想要自动给它配置的话,就可以使用config 进行配置管理,在管理节点上创建配置文件,然后将这个配置文件添加到集群中即可

1. filebeat.yml
filebeat.inputs:
- type: filestreamenabled: truepaths:- /data/logs/*/*.logparsers:- multiline:type: patternpattern: '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}'negate: truematch: aftermax_lines: 500timeout: 10sprocessors:- dissect:tokenizer: "%{log_timestamp} | %{log_level} | %{namespace} | %{file_path} | %{method} | %{track_id} | %{message}"field: "message"max_lines: 500target_prefix: ""overwrite_keys: true- timestamp:field: log_timestamplayouts:- '2006-01-02 15:04:05.000'test:- '2025-04-14 09:16:52.758'- drop_fields:fields: ["log_timestamp"]output.elasticsearch:hosts: ["http://elasticsearch:9200"]index: "caipu_srv-logs-%{+yyyy.MM.dd}"indices:- index: "caipu_srv-logs-%{+yyyy.MM.dd}"when.contains:tags: "xixi"pipeline: "xixi_processor"setup.template.enabled: false
setup.template.name: "caipu_srv"
setup.template.pattern: "caipu_srv-*"
2. 创建配置
docker config create filebeat-config  /data/docker/filebeat/config/filebeat.yml
3. 使用docker配置文件
version: '3.8'networks:base_service_database-net:external: trueservices:filebeat:container_name: filebeatimage: elastic/filebeat:7.17.7restart: alwaysnetworks:- base_service_database-netdeploy:mode: globalconfigs:- source: filebeat-configtarget: /usr/share/filebeat/filebeat.yml  # 配置文件挂载路径volumes:- type: bindsource: /data/logs/target: /data/logs/- type: bindsource: /var/run/docker.socktarget: /var/run/docker.sock- type: bindsource: /var/lib/docker/containerstarget: /var/lib/docker/containersread_only: trueconfigs:filebeat-config:file: /data/docker/filebeat/config/filebeat.yml  # 使用本地的 filebeat.yml 文件

3 集群堆栈服务

1. 启动堆栈服务
# 可以通过配置文件批量启动服务,类似docker-compose 效果,
# 在docker swarm中,可以根据配置文件中的配置将容器分发给其他的work节点进行启动服务
docker stack deploy -c filebeat.yml filebeat
2. 查看当前服务列表
docker service ls
3. 删除所有服务
docker service ls -q | xargs -r docker service rm
4. 查看服务日志
docker service logs 服务名称/服务id
5.查看当前堆栈列表
docker stack ls
6. 查看堆栈信息
docker stack ps 堆栈名称

有时候有些容器无法启动的时候,使用 docker service logs 堆栈名称 是无法看到容器启动异常报错信息的,这种情况下可以使用docker stack ps 堆栈名称 查看容器状态信息,但是这种情况下容器状态信息是被省略展示的,erro 有时候展示的不全面,这种情况下,可以使用 docker stack ps --no-trunc 堆栈名称, 加 --no-trunc 参数,不省略展示堆栈信息

4 其他

1. 查看容器基本信息
# 查看当前容器列表
docker ps -a# 查看当前容器基本信息,如 pid,network等基本信息
docker inspect 容器id
2. 宿主机进入容器网络

有时候镜像没有指定的命令,比如 没有ping curl等命令的时候,但是又想要检查测试容器网络状态,这种情况下,可以使用 nsenter命令进入容器网络命名空间,这样就可以在不进入容器的情况下,在宿主机上使用宿主机的命令发起容器的网络请求

 nsenter -n -t `docker inspect -f '{{.State.Pid}}' 容器id `
http://www.lryc.cn/news/595219.html

相关文章:

  • 【docker】分享一个好用的docker镜像国内站点
  • 【图论】CF——B. Chamber of Secrets (0-1BFS)
  • 文本数据分析
  • 本地部署Dify、Docker重装
  • neuronxcc包介绍及示例代码
  • 【Java学习|黑马笔记|Day19】方法引用、异常(try...catch、自定义异常)及其练习
  • seata at使用
  • 深度学习 -- 梯度计算及上下文控制
  • 7月21日总结
  • registry-ui docker搭建私有仓库的一些问题笔记
  • 服务器后台崩溃的原因
  • 使用Langchain调用模型上下文协议 (MCP)服务
  • 【未限制消息消费导致数据库CPU告警问题排查及解决方案】
  • WEB前端登陆页面(复习)
  • 随笔20250721 PostgreSQL实体类生成器
  • Elasticsearch X-Pack安全功能未启用的解决方案
  • OpenEuler 22.03 系统上安装配置gitlab runner
  • 笔试——Day14
  • 【PTA数据结构 | C语言版】求单源最短路的Dijkstra算法
  • 打造自己的 Jar 文件分析工具:类名匹配 + 二进制搜索 + 日志输出全搞定
  • Laravel 后台登录 403 Forbidden 错误深度解决方案-优雅草卓伊凡|泡泡龙
  • PHP实战:从原理到落地,解锁Web开发密码
  • 【HarmonyOS】ArkTS语法详细解析
  • Valgrind Cachegrind 全解析:用缓存效率,换系统流畅!
  • NISP-PTE基础实操——代码审计
  • Near Cache
  • 嵌入式学习-土堆目标检测(1)-day26
  • 低代码平台能否完全取代传统前端开发
  • Apache Ignite Binary Object 调优
  • OpenCV计算机视觉实战(16)——图像分割技术