docker-compose介绍

197 阅读4分钟

官网文档 github.com/docker/comp…

docs.docker.com/compose/com…

docker-compose使用简介

  • docker-compose项目是Docker官方的开源项目,可以对单机上的容器 进行快速编排

    • 可以批量管理多个容器的单机编排工具
  • docker-compose将所管理的容器分为三层

    • project:工程,默认当前目录名。
    • service:服务,通过服务名称管理容器。
    • container:容器
  • docker-compose有两个大的版本

    • V1 python
    • V2 golang
  • 可以解决容器之间的依赖关系,

    • 比如启动一个nginx前端服务的时候会调用后端的tomcat,那就得先启动tomcat,但是启动tomcat容器 还需要依赖数据库,那就还得先启动数据库
    • docker-compose就可以解决这样的嵌套依赖关系,其完全可以替代docker run对容器进行创建、启动和停止。

解决的问题:

单机场景 单机场景 当在宿主机启动较多的容器时候,如果都是手动操作会觉得比较麻烦而且重复的操作容易出错

docker-compose安装

目前有v1和v2两个版本,v1使用python开发、v2是后出的基于go开发的版本、有些命令与v1不兼容,目前主要是使用的v1版本,

github.com/docker/comp…

###  ubuntu apt:  
root@docker-server1:~# apt install docker-compose

### centos 7.x yum:  
 [root@centos7 ~]# yum install epel-release  
 [root@centos7 ~]# yum install docker-compose

### pip:  
 root@docker-server1:~# apt install python3-pip  
 root@docker-server1:~# pip3 install docker-compose

### 二进制:  
 root@docker-server2:~# wget https://github.com/docker/compose/releases/download/1.xy.z/docker-compose-Linux-x86_64  root@docker-server2:~# cp docker-compose-Linux-x86_64 /usr/bin/docker-compose  
 root@docker-server2:~# chmod a+x /usr/bin/docker-compose  
 root@docker-server2:~# docker-compose version  
 docker-compose version 1.29.2, build 5becea4c

docker-compose.yml 示例文件

version: '3.6' #版本号,https://docs.docker.com/compose/compose-file/compose-versioning/ 
#定义服务
    services: 
        #当前容器的服务名  
        nginx-server: 
            #镜像名称
            image: nginx:1.22.0-alpine 
            #容器名称 
            container_name: nginx-web1
            #声明端口映射
            expose:
            - 80
            - 443  
            #定义端口映射
            ports:
            - "80:80"  
            - "443:443"

docker-compose命令介绍

默认找当前路径的 docker-compose.yml文件

[root@hybrid01 ~]# docker-compose --help
Define and run multi-container applications with Docker.

Usage:
  docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
  docker-compose -h|--help

Options:
  -f, --file FILE             Specify an alternate compose file (default: docker-compose.yml)
  -p, --project-name NAME     Specify an alternate project name (default: directory name)
  --verbose                   Show more output
  --no-ansi                   Do not print ANSI control characters
  -v, --version               Print version and exit
  -H, --host HOST             Daemon socket to connect to

  --tls                       Use TLS; implied by --tlsverify
  --tlscacert CA_PATH         Trust certs signed only by this CA
  --tlscert CLIENT_CERT_PATH  Path to TLS certificate file
  --tlskey TLS_KEY_PATH       Path to TLS key file
  --tlsverify                 Use TLS and verify the remote
  --skip-hostname-check       Don't check the daemon's hostname against the name specified
                              in the client certificate (for example if your docker host
                              is an IP address)
  --project-directory PATH    Specify an alternate working directory
                              (default: the path of the Compose file)

Commands:
  build              Build or rebuild services
  bundle             Generate a Docker bundle from the Compose file
  config             Validate and view the Compose file
  create             Create services
  down               Stop and remove containers, networks, images, and volumes
  events             Receive real time events from containers
  exec               Execute a command in a running container
  help               Get help on a command
  images             List images
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pull service images
  push               Push service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  top                Display the running processes
  unpause            Unpause services
  up                 Create and start containers
  version            Show the Docker-Compose version information

默认找 docker-compose.yml文件 env_file 是一个key value 的文件 用于传递环境变量 profile打标签 对容器进行筛选

命令选项,需要在docker-compose.yml文件目录执行,带#的不常用

-     #build #构建或重新构建服务、在修改Dockerfile后,可以通过docker-compose build重新构建镜像并重建服务

-     #bundle #从当前docker compose文件生成一个以当前目录为名称的从Compose文件生成一个分布式应用程序捆绑包(DAB)、已废弃

-     config -q #验证docker-compose.yml文件,没有错误不输出任何信息

-     #create #创建服务,但是容器不启动

-     down #停止并删除资源,默认会删除容器和网络

-     #events #从容器接收实时事件,可以指定json日志格式,如# docker-compose events --json

-     #exec #基于service进入指定容器执行命令# docker-compose ps --services# docker exec -it nginx-web1 sh

-     help #显示帮助细信息

-     images #列出本地镜像

-     kill #强制终止运行中的容器# docker-compose kill -s SIGKILL nginx-server #SIG是信号名的通用前缀,KILL是指让一个进程立即终止的动作,合并起来SIGKILL就是发送 给一个进程使进程立即终止的信号。

-     logs #基于service查看容器的日志  # docker-compose logs --tail="10" -f nginx-server

-     #pause #暂停服务  # docker-compose ps --service  # docker-compose pause nginx-server
    
#port #基于service查看容器的端口绑定信息# docker-compose port --protocol=tcp nginx-server 80

-     ps #列出容器信息

-     pull #拉取镜像

-     #push #上传镜像

-     #restart #重启服务

-     rm #删除已经停止的服务

-     #run #一次性运行容器,等于docker run --rm

-     scale #设置指定服务运行的容器个数

-     # docker-compose scale nginx-server=2 #动态伸缩每个service的副本数,不能指定容器名和端口映射

-     start #启动服务# docker-compose start nginx-server

-     stop #停止服务# docker-compose stop nginx-server

-     top #显示容器运行状态# docker-compose top

-     unpause #取消暂定状态中的server# docker-compose unpause nginx-server

-     up #创建并启动容器,通常配合-d参数在后台运行容器# docker-compose up -d

-     version #显示docker-compose版本信息

基于docker-compsoe实现Nginx+Java+Mysql服务部署