Docker(docker-compose)

官方文档  

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

docker-compose下载安装:

[root@localhost /]# curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
[root@localhost /]# docker-compose #如果提示权限不够,执行命令赋予权限
[root@localhost /]# chmod +x /usr/local/bin/docker-compose
[root@localhost /]# sudo docker-compose version #查看版本

docker-compose基础命令:

[root@localhost /]# docker-compose -h  #查看帮助
[root@localhost /]# docker-compose --help [root@localhost
/]# docker-compose -f docker-compose.yml up -d  #-f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。 [root@localhost /]# docker-compose up -d  #启动所有容器,-d 将会在后台启动并运行所有的容器 [root@localhost /]# docker-compose down  #停用移除所有容器以及网络相关 [root@localhost /]# docker-compose logs -t -f –tail 300  #查看日志 [root@localhost /]# docker-compose ps  #列出项目中目前的所有容器 [root@localhost /]# docker-compose build  #构建(重新构建)项目中的服务容器。 [root@localhost /]# docker-compose pull  #拉取服务依赖的镜像 [root@localhost /]# docker-compose restart  #重启项目中的服务 [root@localhost /]# docker-compose rm  #删除所有(停止状态的)服务容器。推荐先执行docker-compose stop命令来停止容器。 [root@localhost /]# docker-compose run ubuntu ping docker.com  #在指定服务上执行一个命令。 [root@localhost /]# docker-compose scale web=3 db=2  #设置指定服务运行的容器个数。通过 service=num 的参数来设置数量 [root@localhost /]# docker-compose start  #启动已经存在的服务容器。 [root@localhost /]# docker-compose stop  #停止处于运行状态的容器但不删除它,docker-compose start可以再次启动这些容器。

docker-compose.yaml配置层级:

docker-compose.yaml文件分为三个主要部分:services、networks、volumes。 
services主要用来定义各个容器。
networks定义需要使用到的network网关。
volumes定义services使用到的volume数据卷。
三层分别如下: version:
  ... services: web: images: ports: ... redis: ... volumes:
  ... networks:
  ... configs:
  ...

docker-compose.yaml配置注释:

#Docker-compose版本号。
version: '3'
#用于指引Docker创建新的网络。默认情况下,DockerCompose会创建bridge网络。
networks:
  #配置容器连接的网络,引用顶级 networks 下的条目。
  app_networks:
#定义不同的应用服务(DockerCompose会将每个服务部署在各自的容器中)。
services:
  #指定服务名称
  app_mysql:
    #指定服务使用的镜像
    image: mysql:5.7
    #指定容器名称
    container_name: app_mysql
    #用来给容器root权限,不安全的。
    privileged: true
    #设置容器总是重新启动。     restart: always     #指定服务运行的端口     ports :       
- "33006:3306"
    #配置容器连接的网络,是在networks一级key中定义的网络。
    networks:
      - app_networks     #指定容器的环境变量     environment:       #数据库密码       - MYSQL_ROOT_PASSWORD=123456       #创建的库       - MYSQL_DATABASE=app       #允许多IP连接数据库       - MYSQL_ROOT_HOST=%
  app_redis:     image: redis:latest     restart: always     ports:       
- ${REDIS_PORT}:6379     networks:       - app_networks     #将主机的数据卷或着文件挂载到容器里。     volumes:       - ./redis/data:/data       - /etc/localtime:/etc/localtime     #指定 Docker 在容器中执行的脚本。(覆盖容器启动的默认命令)。     command: redis-server --requirepass ${REDIS_PASSWORD}   app_api:     networks:       - app_networks     restart: always     image: java:8     ports:       - 8080     #添加环境变量。     environment:   # 容器内端口。   - PORT=8080   # 配置文件加密key。   - ENCRYPTOR_PASSWORD=${ENCRYPTOR_PASSWORD}   # 是否开启定时任务 1开启 其他不开启。   - TIMING_TASK_PERFORM=${TIMING_TASK_PERFORM}   # 其他配置。   - OTHER_PARAMS=${OTHER_PARAMS}
    #将宿主机文件挂载到容器内部     volumes:       
- /etc/localtime:/etc/localtime       - ./logs:/logs       - ./app-0.0.1-SNAPSHOT.jar:/app.jar
  app_nginx:

    restart: always
    image: nginx
    networks:
      - app_networks     #设置依赖关系。使用docker-compose up启动时 :以依赖性顺序启动服务。在以下示例中,先启动app_redis app_mysql app_api服务后才会启动app_nginx
    depends_on:

      - app_redis
      - app_mysql
      - app_api     ports:
      #前面是宿主机启动服务的端口,后面是容器内部映射的端口,只配置一个那就算是容器内的端口,宿主机端口随机生成       
- 80:8080     volumes:
      #解决本地和容器内部时区不一致问题的配置
      - /etc/localtime:/etc/localtime       
- ./nginx/nginx.conf:/etc/nginx/nginx.conf

 docker-compose.yaml配置的环境变量可以通过(.env)文件来构造,.env 文件仅在使用docker-compose.yaml 文件时的预处理步骤中使用。美元符号变量(如 $HI)被替换为同一目录中名为“.env”的文件中包含的值。

 

posted @ 2022-12-07 14:39  21karat  阅读(207)  评论(0编辑  收藏  举报