Docker Compose 基础使用及安装

Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具

  1. 使用的三个步骤
  • 使用 Dockerfile 文件定义应用程序的环境
  • 使用 docker-compose.yml 问阿金定义构成应用程序的服务,这样他们可以在隔离环境中一起运行
  • 最后 执行 docker-composer up 命令来创建 并启动所有的服务

Docker compose 安装 并为安装脚本添加执行权限

sudo curl -L https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# 2. 查看是否安装成功
docker-compose -v

  1. 案例
  • 2.1 编写docker-compose.yml 文件
# 1. 创建nginx 目录
mkdir -p /soft/docker/docker-nginx
# 2. 切换到指定目录
cd /soft/docker/docker-nginx
# 3. 编写docker-compose.yml 文件
vi docker-compose.yml

# 版本信息 
version: "3.8"
# 定义服务可以是多个
services:
  nginx: #服务名
    image: nginx # 创建容器锁需要的镜像
    container_name: mynginx # 容器名称 默认为 (工程名称_服务名_序号)
    ports: # 宿主机和容器端口映射关系
      - "80:80" # 左边主机端口 右边容器端口
    networks: # 配置容器连接网络,引用顶级 networks 下的条目
      - nginx-net
# 定义网络 , 可以是多个, 不声明, 默认创建一个网络名称为 “工程名称_default” 的 bridge 网络
networks:
  nginx-net: # 一个具体的网络条目名称
    name: nginx-net # 网络名称 默认为(工程名称_网络条目名称)
    driver: bridge # 网络模式 默认为 bridge

  1. 1 执行文件
docker-compose up

在这里插入图片描述
正常访问Nginx
在这里插入图片描述
3. docker-compose down 自动删除容器 和 网络

[root@root docker-nginx]# docker-compose down
Removing mynginx ... done
Removing network nginx-net

  1. 使用 compose 搭建redis 集群
    4.1 编写redis 配置文件
  2. 创建目录
[root@root ~]# mkdir -p /soft/redis/redis-cluster
  1. 目录下 编写 redis-cluster.tmpl
port ${
    
    PORT}
requirepass root
masterauth root
protected-mode no
daemonize no
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-announce-ip 192.168.220.133
cluster-announce-port ${
    
    PORT}
cluster-announce-bus-port 1${
    
    PORT}

# 2. 第二胎虚拟机改下ip
 
  1. 执行端口文件
# 1. 第一台linux
for port in `seq 6371 6373`; do \
mkdir -p ${
    
    port}/conf \
&& PORT=${
    
    port} envsubst < redis-cluster.tmpl > ${
    
    port}/conf/redis.conf \
&& mkdir -p ${
    
    port}/data; \
done

# 2. 第二台 虚拟机
for port in `seq 6374 6376`; do \
mkdir -p ${
    
    port}/conf \
&& PORT=${
    
    port} envsubst < redis-cluster.tmpl > ${
    
    port}/conf/redis.conf \
&& mkdir -p ${
    
    port}/data; \
done

  1. 编写Docker compose 模板文件

# 描述compose 版本信息
version: "3.8"
services:
  redis-6371: #服务名称
    image: redis # 创建容器时镜像
    container_name: redis-6371 # 容器名称
    restart: always #容器总是重新启动
    network_mode: "host" # 网络模式 host
    volumes: #数据卷目录挂载
      - /soft/redis/redis-cluster/6371/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /soft/redis/redis-cluster/6371/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf # 启动容器后默认执行的命令

  redis-6372: #服务名称
    image: redis # 创建容器时镜像
    container_name: redis-6372 # 容器名称
    restart: always #容器总是重新启动
    network_mode: "host" # 网络模式 host
    volumes: #数据卷目录挂载
      - /soft/redis/redis-cluster/6372/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /soft/redis/redis-cluster/6372/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf # 启动容器后默认执行的命令

  redis-6373: #服务名称
    image: redis # 创建容器时镜像
    container_name: redis-6373 # 容器名称
    restart: always #容器总是重新启动
    network_mode: "host" # 网络模式 host
    volumes: #数据卷目录挂载
      - /soft/redis/redis-cluster/6373/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /soft/redis/redis-cluster/6373/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf # 启动容器后默认执行的命令


------
#描述版本信息
version: "3.8"

#定义服务 可以多个
services:
  redis-6374: #服务名称
    image: redis # 创建容器时镜像
    container_name: redis-6374 # 容器名称
    restart: always #容器总是重新启动
    network_mode: "host" # 网络模式 host
    volumes: #数据卷目录挂载
      - /soft/redis/redis-cluster/6374/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /soft/redis/redis-cluster/6374/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf # 启动容器后默认执行的命令

  redis-6375: #服务名称
    image: redis # 创建容器时镜像
    container_name: redis-6375 # 容器名称
    restart: always #容器总是重新启动
    network_mode: "host" # 网络模式 host
    volumes: #数据卷目录挂载
      - /soft/redis/redis-cluster/6375/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /soft/redis/redis-cluster/6375/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf # 启动容器后默认执行的命令

  redis-6376: #服务名称
    image: redis # 创建容器时镜像
    container_name: redis-6376 # 容器名称
    restart: always #容器总是重新启动
    network_mode: "host" # 网络模式 host
    volumes: #数据卷目录挂载
      - /soft/redis/redis-cluster/6376/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /soft/redis/redis-cluster/6376/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf # 启动容器后默认执行的命令

启动:

docker-compose up -d (后台运行)

在这里插入图片描述

# 1. 进入容器
docker exec -it redis-6374 bash

# 2 . 进入目录
cd /usr/local/bin

# 3. 执行集群指令
redis-cli -a root --cluster create 192.168.220.132:6371 192.168.220.132:6372 192.168.220.132:6373 192.168.220.133:6374 192.168.220.133:6375 192.168.220.133:6376 --cluster-replicas 1

# 4. 检查集群状态
redis-cli -a root --cluster check 192.168.220.132:6371

# 5. 集群模式设置 -c -a 用户
redis-cli -c -p 6374 -a root 

  • 创建OK
    在这里插入图片描述
# 描述compose 版本信息
version: "3.8"
services:
  redis-6371: #服务名称
    image: redis # 创建容器时镜像
    container_name: redis-6371 # 容器名称
    restart: always #容器总是重新启动
    network_mode: "host" # 网络模式 host
    volumes: #数据卷目录挂载
      - /soft/redis/redis-cluster/6371/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /soft/redis/redis-cluster/6371/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf # 启动容器后默认执行的命令

  redis-6372: #服务名称
    image: redis # 创建容器时镜像
    container_name: redis-6372 # 容器名称
    restart: always #容器总是重新启动
    network_mode: "host" # 网络模式 host
    volumes: #数据卷目录挂载
      - /soft/redis/redis-cluster/6372/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /soft/redis/redis-cluster/6372/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf # 启动容器后默认执行的命令

  redis-6373: #服务名称
    image: redis # 创建容器时镜像
    container_name: redis-6373 # 容器名称
    restart: always #容器总是重新启动
    network_mode: "host" # 网络模式 host
    volumes: #数据卷目录挂载
      - /soft/redis/redis-cluster/6373/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /soft/redis/redis-cluster/6373/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf # 启动容器后默认执行的命令
 
  mysql7:
    image: mysql
    container_name: mysql7
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - /soft/mysql/data:/var/lib/mysql
      - /soft/mysql/my.conf:/etc/mysql/my.conf
  registry:
    image: registry
    container_name: registry
    ports:
      - "5000:5000"
    restart: always
    volumes:
      - /soft/docker/:/var/lib/registry
      - /soft/docker/certs/:/certs
      - /soft/docker/auth/:/auth
    environment:
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
      REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
      REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domian.crt
      REGISTRY_HTTP_TLS_KEY: /certs/domain.key

猜你喜欢

转载自blog.csdn.net/qq_16183731/article/details/121311825