首页 > 其他分享 >Docker compose单机编排工具

Docker compose单机编排工具

时间:2023-05-11 09:57:54浏览次数:47  
标签:容器 compose 单机 ## -- zabbix docker Docker

Docker compose单机编排工具

目录

docker-compose介绍

Compose是用于定义和运行多容器 Docker应用工具

通过Compose 可以使用YML文件来配置应用程序所需要的所有服务

Docker Compose使用的三步:

  • 1.使用docker file 定义应用程序的环境
  • 2.docker-compose定义构成应用程序的服务
  • 3.启动Compose,就相当于启动应用

Docker Compose官方版本说明:

TP

docker-compose安装部署

## yum安装docker Compose
yum install -y docker-compose(需要epel源)

## 官方下载方式
[root@db02 ~]$ cd /usr/local/bin/
[root@db02 /usr/local/bin]$ curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

## 加执行权限
[root@db02 /usr/local/bin]$ chmod +x /usr/local/bin/docker-compose

## 查看版本
[root@db02 /usr/local/bin]$ docker-compose version

Docker-compose语法

YAML语法

version: '版本号'
services:
  服务名称1:
    image: 容器镜像
    container_name: 容器名称
    environment:
      - 环境变量1=值1
      - 环境变量2=值2
    volumes:
      - 宿主机数据目录:容器内数据目录
      - 宿主机目录路径:容器目录路径
      - 驱动:容器目录路径
    ports:
      - 宿主机端口:容器内映射端口
    networks:
      - 自定义网络名称
    links:
      - namenode
    depends_on:
      - 依赖服务
    command:
      - 数据库使用字符集变量时可以用
    restart: always
    
  服务名称2:
    image: 容器镜像
    container_name: 容器名称
    environment:
      - 环境变量1=值1
      - 环境变量2=值2
    user: 宿主机用户:容器用户
    volumes:
      - 宿主机数据目录:容器内数据目录
      - 宿主机目录路径:容器目录路径
      - 驱动:容器目录路径
    ports:
      - 宿主机端口:容器内映射端口
    networks:
      - 自定义网络名称
    links:
      - namenode
    depends_on:
      - 依赖服务
    restart: always
    
networks:
  default:
  externnal: true
  name: 自定义网络名称

自动编排zabbix

前面使用了手动部署启动abbix

手动启动zabbix

## 手动启动zabbix

# 开启mysql容器,用于zabbix连接使用
docker run \
--name mysql56 \
-p 3306:3306 \
-e MYSQL_DATABASE=zabbix \		 # 创建zabbix库
-e MYSQL_USER=zabbix \			 # 创建zabbix用户
-e MYSQL_PASSWORD=zabbix \		 # 给用户密码
-e MYSQL_ROOT_PASSWORD=123 \	  # 给root用户密码
-d mysql:5.6 \
--character-set-server=utf8 \	  # 指定字符集及校验规则
--collation-server=utf8_bin


# 开启zabbix-server容器
docker run \
--name zabbix-server-mysql \	    # 定义容器名称
--link mysql56 \				   # 与MySQL容器建立单向容器互通
-p 10051:10051 \				   # 端口转发,服务端
-e DB_SERVER_HOST="mysql56" \		# 需要连接到的后端数据库容器名
-e MYSQL_USER="zabbix" \		    # 连接后端数据库的用户
-e MYSQL_PASSWORD="zabbix" \		# 用户密码
-d zabbix/zabbix-server-mysql


# 开启zabbix前端容器
docker run \
--name zabbix-web-nginx-mysql \				# 定义容器名称
--link mysql56 \						   # 与MySQL容器建立单向容器互通
--link zabbix-server-mysql \			    # 与zabbix-server容器建立单向容器互通
-p 80:8080 \							   # 用宿主机80代理zabbix前端8080端口
-e DB_SERVER_HOST="mysql56" \				# 需要连接到的后端数据库容器名
-e MYSQL_USER="zabbix" \					# 连接后端数据库的用户
-e MYSQL_PASSWORD="zabbix" \				# 用户密码
-e ZBX_SERVER_HOST="zabbix-server-mysql" \	  # 指定zabbix服务端容器名称
-e PHP_TZ="Asia/Shanghai" \					# 指定时区
-d zabbix/zabbix-web-nginx-mysql

使用docker compose编排zabbix

[root@db02 /app/zabbix]$ vim docker-compose.yml 
version: '3'
services:
  mysql5.7:									# 服务名称 自定义
    image: mysql:5.7						 # 使用的镜像
    container_name: mysql5.7				  # 容器名称
    environment:							 # 变量定义
      - MYSQL_ROOT_PASSWORD=123
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix
    volumes:								# 文件映射
      - /data/mysql/data:/var/lib/mysql
    user: 1000:999							 # 用户映射,本机的id为1000用户是mysql,容器的mysql用户id为999
    ports:									# 端口映射
      - 3306:3306
    command:								# 字符集及校验规则
      --character-set-server=utf8
      --collation-server=utf8_bin
    restart: always							# 开启开机自启

  zabbix-server:
    image: zabbix/zabbix-server-mysql
    container_name: zabbix-server
    environment:
      - DB_SERVER_HOST=mysql5.7
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix
    ports:
      - 10051:10051
    links:									# 建立连接的容器名称
      - mysql5.7
    depends_on:								 # 依赖的服务名称,必须等被依赖的服务启动完成才能执行
      - mysql5.7
    restart: always


  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql
    container_name: zabbix-web
    environment:
      - DB_SERVER_HOST=mysql5.7
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix
      - ZBX_SERVER_HOST=zabbix-server
      - PHP_TZ=Asia/Shanghai
    ports:
      - 80:8080
    links:
      - mysql5.7
      - zabbix-server
    depends_on:
      - mysql5.7
      - zabbix-server
    restart: always


# 启动
## 进入zabbix工作目录
[root@db02 ~]$ cd /app/zabbix
[root@db02 /app/zabbix]$ docker-compose up -d

## 选项:
-d:放后台运行
-f:指定编排的文件

注意事项:

在要编排的项目/服务目录中,最好只有一个docker-compose.yml文件,如果有多个,可以用-f指定文件,但不建议这样做

官方版MySQL compose

version: '3.1'
services:
  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123
      
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080
    links:
      - db

访问10.0.0.51:8080

官方es compose

[root@db02 /app/es]$ vim docker-compose.yml
version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02
      - cluster.initial_master_nodes=es01,es02
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic

  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01
      - cluster.initial_master_nodes=es01,es02
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data02:/usr/share/elasticsearch/data
    networks:
      - elastic

  kibana:
    image: docker.elastic.co/kibana/kibana:7.5.2
    ports:
      - 5601:5601
    networks:					# 所有容器都使用bridge网络模式下的自定义elastic网卡,所以不再需要links模块
      - elastic
    environment:
      SERVER_NAME: kibana.wj.com
      ELASTICSEARCH_HOSTS: '["http://es01:9200"]'

volumes:
  data01:
    driver: local
  data02:
    driver: local

networks:					    # 自定义网卡
  elastic:
    driver: bridge


## 注意:
建议提前准备好elasticsearch和kibana的镜像,因为属实太大
[root@db02 /app/es]$ ll
total 1789124
-rw-r--r-- 1 root root       1344 Nov 19 11:58 docker-compose.yml
-rw-r--r-- 1 root root  790622720 Nov 19 11:32 es.tgz
-rw-r--r-- 1 root root 1041428992 Nov 19 15:36 kibana.tgz

# 利用docker load导入镜像即可

docker-compose常用命令

## 第一次启动
docker-compose up

## 放后台启动
docker-compose up -d

## 指定文件启动
docker-compose -f 文件名.yml up -d

## 查看进程
docker-compose ps

## 查看日志
docker-compose logs

## 查看单个服务日志
docker-compose logs [-f] 容器名称

## 停止
docker-compose stop

## 停止单个服务
docker-compose stop 容器名称

## 启动单个服务
docker-compose start 容器名称

## 重启
docker-compose restart

## 单个服务
docker-compose restart 容器名称

标签:容器,compose,单机,##,--,zabbix,docker,Docker
From: https://www.cnblogs.com/blogwjbb/p/17390128.html

相关文章

  • docker overlay2 占用大量磁盘空间
    dockeroverlay2占用大量磁盘空间#进入实际的dockeroverlay2目录#以下是举例:查询到builder-mw容器中,日志量异常(根据实际的服务器查询到目录为准)[root@pdsweb~]#cd/home/docker/overlay2/[root@pdsweboverlay2]#du-h--max-depth=1|grep[GT]5.4G ./7908539d4......
  • Docker CLI docker compose run常用命令
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍DockerCLI中d......
  • Docker 国内镜像加速
    1.摘要国内从DockerHub拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker官方和国内很多云服务商都提供了国内加速器服务,建议根据运行docker的云平台选择对应的镜像加速服务。下面列出国内常用的加速站点,排名不分先后,总体来说阿里云速度较稳定。docker中国区官方镜像加......
  • docker修改镜像源
    docker修改镜像源我们在Linux系统上装docker后,下载我们所需要的镜像去创建容器时,由于docker的默认是从国外的仓库里边去下载我们所需要的镜像的,从而会导致dockerpull下拉速度比较慢将docker镜像源修改为国内的编辑配置文件在/etc/docker/daemon.json文件中添加以下参数,......
  • 使用docker搭建nodebb论坛
    1、首先放开4567端口因为这是nodebb的端口号firewall-cmd--zone=public--add-port=4567/tcp--permanent2、构建所需要的docker网络dockernetworkcreatemongo-net3、安装mongodockerrun--namemongo--restartalways--networkmongo-net-dmongo--wiredTigerCacheSizeGB......
  • docker部署grafana
    复制文件创建数据目录#mkdirconfgrafana运行grafana#dockerrun--rm-ti--namegrafanagrafana/grafana-oss:9.5.1-ubuntu复制grafana.ini#dockercpgrafana:/etc/grafana/grafana.ini./conf设置目录权限#chown-R472conf/grafana/docker-compose.yamlver......
  • kafka单机安装和简单使用
    1kafka下载linux环境安装kafka,需要预先准备相关资源这里使用的是kafka_2.12-2.5.1版本,下载路径为:http://archive.apache.org/dist/kafka/2.5.1/kafka_2.12-2.5.1.tgz也可以通过命令wgethttp://archive.apache.org/dist/kafka/2.5.1/kafka_2.12-2.5.1.tgz进行资......
  • 解决 Docker 的 DeviceMapper 占用空间过大
    某虚拟机运行容器半年后,磁盘空间报警,使用率超过百分之九十。经查后发现为Docker的DeviceMapper占用空间过大。概述DeviceMapper为容器的镜像和运行过程的缓存存放目录,这并不是一个文件夹,而是一个虚拟块设备。解决先将当前运行的容器导出为镜像(若已经对原有镜像进行过修改......
  • 解决CentOS 7出现docker-compose: command not found
    解决CentOS7出现docker-compose:commandnotfound1.安装docker-compose既然使用了docker-compose那自然得安装了在GitHub上拉取过慢,建议在国内源DaoCloud中拉取:curl-Lhttps://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname-s`-`unam......
  • 安装docker和docker-compose的shell脚本(Centos7版本)
    在执行脚本之前,我们需要先做两件事:避免防火墙与docker产生冲突,应先关闭防火墙。shell#去掉防火墙的开机自启动systemctldisablefirewalld.service#关闭防火墙systemctlstopfirewalld.service国内拉取dockerhub中的镜像速度一般都很慢,现在有一种方法可以提高......