docker-compose使用方法
发表于:2022-04-21 | 分类: docker
Docker-compose使用方法
一:简介
Dockerfile 可以让用户管理一个单独的应用容器;而 Compose 则允许用户在一个模板(YAML 格式)中定义一组相关联的应用容器(被称为一个 project,即项目),例如一个 Web 服务容器再加上后端的数据库服务容器等,就拿官网的 Python 例子来说,功能很简单,利用 redis 的 incr 的功能对页面的访问量进行统计。
二:全量全货环境介绍
常用命令

docker-compose:
--help 查看帮助
up  前台启动
down 关闭所有
-f  file    指定启动或关闭时的控制文件,如果不指定,默认为当前目录下docker-compose.yml 
up -d  后台启动
ps    查看容器状态
logs    查看日志
docker-compose.yml文件讲解

network_mode: host 对应了docker中的--network,默认使用bridge

服务

# 使用v2版本
version: '2'
services:
    # 服务名
    manageserver:
        # 使用的镜像
        image: openjdk:7-jdk
        # 容器重启策略  no:默认策略,一直不重启   on-failure   失败才重启,on-failure:3 重启三次    always   一直重启
        restart: always
        # 使用GPU   version得指定'2.3'版本,需要安装nvidia-docker2
        runtime: nvidia
        # 资源限制   
        ulimits:
            # 创建的进程限制(线程是轻量级的进程)
            nproc: 65535
            # 打开文件数限制
            nofile:
                soft: 20000
                hard: 40000
            # 内存限制
            mem_limit: 512m
        # 端口映射
        ports:
            - "18001:18001"
            - "5009:5009"
        # 保证几个server启动后,才启动
        depends_on:
            - zoo1
            - activemq
            - redis
        # 镜像变量
        environment:
            - _JAVA_OPTIONS=-Duser.timezone=Asia/Shanghai
            - JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5009
            - DB_URL=${DB_URL}
            - DB_USER=${DB_USER}
            - DB_PWD=${DB_PWD}
        # 文件映射
        volumes:
             - /srv/docker/app:/app
        # 指定接入点(镜像生成后,会执行的启动脚本)
        entrypoint:
             - /app/entrypoint.sh   # 会覆盖dockerfile中
             - manageserver     # 往上面的脚本传参
Tomcat

version: '2'
services:   
    rweb01:
        image: tomcat:7.0.75
        # 保证后端服务先启动(但是无法保证后端服务无法完整启动)
        depends_on:
            - zoo1
            - activemq
            - redis
        environment:
            - _JAVA_OPTIONS=-Duser.timezone=Asia/Shanghai
        volumes:
            - /srv/docker/tomcat/webapps/adminweb:/usr/local/tomcat/webapps/adminweb
            - /srv/docker/tomcat/webapps/accountweb:/usr/local/tomcat/webapps/accountweb
        ports:
            - "7071:8080"
Oracle

docker run --network=host -v /srv/docker/oracle/u01:/u01  -p 1521:1521 -p 1158:1158 --name oracle  -d ufoscout/oracle-11g
--network=host          网络模拟,和宿主机共用网卡(默认为bridge)
--name      容器名
-d     后台启动
ufoscout/oracle-11g         镜像名

查看镜像启动
# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                NAMES
0b51c82037ac        ufoscout/oracle-11g   "/bin/sh -c oracle.sh"   6 months ago        Up 4 months                              oracle

"/bin/sh -c oracle.sh"       为接入文件,当容器启动后,会自动执行
三:日常维护使用命令
启动前置容器

# cd /root/docker && docker-compose up  -d  
关闭前置容器

# cd /root/docker && docker-compose down
查看容器运行日志

# cd /root/docker && docker-compose logs      查看所有
# docker-compose logs redis          查看指定服务
查看服务运行状态

# docker-compose ps
       Name                     Command               State           Ports          
------------------------------------------------------------------------------------
dockerfile_redis_1   docker-entrypoint.sh redis ...   Up      6379/tcp               
dockerfile_web_1     /bin/sh -c python app.py         Up      0.0.0.0:5000->5000/tcp

# State    up或exit     ,当我们使用发现一个容器为exit状态,可以直接使用docker-compose up  -d [server]启动
进入容器

docker exec -ti [id | name ] /bin/bash
数据库容器启动关闭


# docker start oracle      启动
# docker stop oracle 关闭
上一篇:
elk-filebeat收集docker容器日志
下一篇:
ubuntu如何降级到之前的版本