Docker单机编排工具

Docker-Compose 介绍

Compose 是用于定义和运行多容器 Docker 应用工具
通过 Compose 可以使用 YML 文件来配置应用程序所需要的所有服务

Docker Compose 使用的三步:

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

版本号对应

yaml使用compose的版本:version 2-3的大版本
docker版本:docker version
docker-compose版本:docker-compose version

安装指定版本的 Docker-compose

# 官方下载
curl -L "https://github.com/docker/compose/releases/download/v1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

## 本地下载
wget https://download.wodeyumengouwo.com/kubernetes/docker/docker-compose-linux-x86_64

# yum安装docker-Compose
yum install -y docker-compose

# 手动传输docker-compose安装包,需要进行以下操作
[root@docker02 ~]# mv docker-compose-linux-x86_64 /usr/bin/docker-compose
[root@docker02 ~]# chmod +x /usr/bin/docker-compose
[root@docker02 ~]# docker-compose version
Docker Compose version v2.21.0

Docker-compose 模板

version: '版本号'

services:
  服务名称1:
    image: 容器镜像
    container_name: 容器名称
    environment:
      环境变量1=值1(环境变量1: 值1)
      环境变量2=值2(环境变量2: 值2)
    user: 宿主机用户:容器用户#(如果是相同用户只需要填写一个)
    volumes:
      - 宿主机数据目录:容器内数据目录
    ports:
      - 宿主机端口:容器内映射端口
    networks:
      - 自定义网络名称
    links:
      - namenode
    command:
      - 数据库使用字符集变量时可以用
    restart: always

  服务名称2:
    image: 容器镜像
    container_name: 容器名称
    environment:
      环境变量1=值1(环境变量1: 值1)
      环境变量2=值2(环境变量2: 值2)
    user: 宿主机用户:容器用户#(如果是相同用户只需要填写一个)
    volumes:
      - 宿主机数据目录:容器内数据目录
    ports:
      - 宿主机端口:容器内映射端口
    networks:
      - 自定义网络名称
    links:
      - namenode
    command:
      - 数据库使用字符集变量时可以用
    depends_on:
      - 依赖服务
    restart: always

networks:
  default:
  externnal: true
  name: 自定义网络名称

Docker-compose 部署 zabbix 实战

Docker run 语法

# 1.启动zabbix数据库
docker run \
--name zabbix-db \
-v /data/zabbix:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123 \
-e MYSQL_DATABASE='zabbix' \
-e MYSQL_USER='zabbix' \
-e MYSQL_PASSWORD='123' \
-p 33060:3306 \
-d mysql:5.7 \
--character-set-server=utf8 \
--collation-server=utf8_bin

# 2.启动zabbix-server
docker run \
--name zabbix-server \
--link zabbix-db \
-e DB_SERVER_HOST="zabbix-db" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="123" \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:5.0.37-alpine

# 3.启动zabbix前端
docker run \
--link zabbix-db \
--link zabbix-server \
--name zabbix-web \
-e DB_SERVER_HOST="zabbix-db" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="123" \
-e ZBX_SERVER_HOST="zabbix-server" \
-e PHP_TZ="Asia/Shanghai" \
-p 8080:8080 \
-d zabbix/zabbix-web-nginx-mysql:5.0.37-alpine

Docker-compose

[root@docker01 zabbix]# cat docker-compose.yaml
version: '2.2'
services:
  mysql57:
    image: mysql:5.7
    container_name: mysql57
    environment:
      MYSQL_ROOT_PASSWORD: '123'
      MYSQL_DATABASE: 'zabbix'
      MYSQL_USER: 'zabbix'
      MYSQL_PASSWORD: '123'
    volumes:
      - /data/mysql57:/var/lib/mysql
    ports:
      - 3306:3306
    command:
      - --character-set-server=utf8
      - --collation-server=utf8_bin
    restart: always

  zabbix-server:
    image: zabbix/zabbix-server-mysql:5.0.37-alpine
    container_name: zabbix-server
    environment:
      DB_SERVER_HOST: 'mysql57'
      MYSQL_USER: 'zabbix'
      MYSQL_PASSWORD: '123'
    ports:
      - 10051:10051
    links:
      - mysql57
    depends_on:
      - mysql57
    restart: always

  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:5.0.37-alpine
    container_name: zabbix-web
    environment:
      DB_SERVER_HOST: 'mysql57'
      MYSQL_USER: 'zabbix'
      MYSQL_PASSWORD: '123'
      ZBX_SERVER_HOST: 'zabbix-server'
      PHP_TZ: 'Asia/Shanghai'
    ports:
      - 8080:8080
    links:
      - mysql57
      - zabbix-server
    depends_on:
      - mysql57
      - zabbix-server
    restart: always

Dockercompose 管理命令

# 启动docker-compose(指定配置文件)
[root@docker01 zabbix]# docker-compose -f zabbix-compose.yaml up
-f 指定配置文件
# 启动docker-compose
[root@docker01 zabbix]# docker-compose up
如不指定配置文件,则文件名需要改为docker-compose

# 后台启动
[root@docker01 zabbix]# docker-compose up -d
-d 后台启动

# 查看进程
[root@docker01 zabbix]# docker-compose ps
    Name                   Command               State                          Ports                       
------------------------------------------------------------------------------------------------------------
mysql57         docker-entrypoint.sh --cha ...   Up      0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp
zabbix-server   /sbin/tini -- /usr/bin/doc ...   Up      0.0.0.0:10051->10051/tcp,:::10051->10051/tcp       
zabbix-web      docker-entrypoint.sh             Up      0.0.0.0:8080->8080/tcp,:::8080->8080/tcp, 8443/tcp 

# 重启(启动\停止)docker-compose
[root@docker01 zabbix]# docker-compose restart(start\stop)

# 指定容器重启(启动\停止)
[root@docker01 zabbix]# docker-compose restart(start\stop) 容器名

# 实时查看docker-compose日志
[root@docker01 zabbix]# docker-compose logs -f

# 指定容器查看docker-compose日志
[root@docker01 zabbix]# docker-compose logs 容器名

docker图形化界面

TP

[root@docker01 ~]# docker load < portainer.portainer.tar.gz 
[root@docker01 ~]# docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --restart=always --name portainer portainer/portainer

image-20230914170055166

image-20230914170120312

修改名称

image-20230914170416277

image-20230914170427049

添加其他主机

image-20230914170538780

# docker 修改远程连接
[root@docker02 ~]# vim /usr/lib/systemd/system/docker.service 
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock

# 重启
[root@docker02 ~]# systemctl daemon-reload
[root@docker02 ~]# systemctl restart docker

image-20230914170644148

image-20230914170753937