目录
一、Docker-compose安装(linux):
1、下载软件:
软件下载地址:https://github.com/docker/compose/releases
2、软件上传:
将下载的linux的docker-compse上传到服务器中的/usr/local/bin中并且将文件重命名为:docker-compose。
3、软件授权:
给刚刚上传的/usr/local/bin/docker-compose进行可执行授权:
执行命令:chmod +x /usr/local/bin/docker-compose
4、查看版本:
通过以上几个步骤就安装好docker-compose了,可以通过查看安装的版本检查docker-compose是否成功安装。
执行命令:docker-compose --version
二、Docker-compose使用:
1、简介:
前面我们使用Docker的时候,定义Dockerfile文件,然后使用docker build、docker run等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知
使用Docker Compose可以轻松、高效的管理容器,它是一个用于定义和运行多容器Docker的应用程序工具。这个工具可以通过一个yml文件(默认文件名为:docker-compose.yml)定义多容器的docker 应用,通过一条命令就可以根据yml文件的定义去创建或者管理多个容器。比如:启动、停止、删除等操作。
Docker-compose中使用到的镜像一些公共的镜像可能是由仓库中有的,比如:jdk等,但是像运行jar项目等这些是需要自定义镜像的,这个自定义镜像的时候就会用到dockerfile,通过dockerfile自定义jar等项目运行的镜像,然后在docker-compose中通过dockerfile构建的镜像生成对应的容器,从而实现对容器的管理。
docker-compose.yml文件中定义了三大概念:
Services:一个service代表一个容器,这个容器可以是从docker hub的image中创建,或者从本地的dockerfile的build出来的image中来创建的。并且每个service的启动类似docker run,可以给service指定在networks和volumes中创建的对应参数的参数引用。总之,通过docker run可以给容器设置的参数都可以在docker-compose中进行设置。
Networks:
Volumes:
Docker-compose也是随着docker发展而不断发展的,也是有版本的,推荐使用现在的最新版本3.0。Docker-compose.yml文件版本与docker版本关系如下:
https://docs.docker.com/compose/compose-file/
说明:2.0与3.0版本最大差别就是2.0版本的docker-compose中包含的多个容器只能在同一个单机linux服务器中进行部署,而3.0版本的docker-compose中包含的多个容器默认也是部署在同一个单机linux服务器中,但是可以通过配置然后在多个不同的linux服务器中进行部署。
2、说明:
说明一下,docker-compose是一个用于本地开发部署的一个工具,在本地开发后可以通过docker-compose可以快速的在本地进行查看最新开发的部署结果,并不是用来部署生产环境的一个工具。
3、编写yml文件:
主要是利用docker-compose对应的语法,编写一个yml文件,该文件中定义多若干个容器,基本包括:使用哪个镜像、指定端口映射、指定目录(卷)映射、指定网络、指定环境变量等,通过这样一个yml可以清晰的看出容器的信息,最终通过docker-compose的命令操作yml文件,完成对容器的构建、管理功能。
例如:
version: '3.4'
services:
eureka:
image: "eureka:1.0"
build:
context: ./
dockerfile: graph-docker-file
target: eureka-server
container_name: eureka-server-1.0
restart: always
environment:
EUREKA_IP: "192.168.137.114"
EUREKA_PORT: "8761"
ports:
- "8761:8761"
volumes:
- "/wocloud/soft/graph/eureka/tmp:/tmp"
config:
image: "config:1.0"
build:
context: ./
dockerfile: graph-docker-file
target: config-server
container_name: config-server-1.0
restart: always
environment:
EUREKA_IP: "192.168.137.114"
EUREKA_PORT: "8761"
depends_on:
- eureka
ports:
- "8001:8001"
volumes:
- "/wocloud/soft/graph/config/tmp:/tmp"
data-management:
image: "data-management:1.0"
build:
context: ./
dockerfile: graph-docker-file
target: data-management
container_name: data-management-1.0
restart: always
environment:
EUREKA_IP: "192.168.137.114"
EUREKA_PORT: "8761"
depends_on:
- eureka
- config
ports:
- "9092:9092"
volumes:
- "/wocloud/soft/graph/data-management/tmp:/tmp"
- "/wocloud/soft/graph/data-management/graphdb_file:/home/graphdb/file"
4、操作docker-compose:
(1)构建容器启动:
命令:docker-compose up
说明:该命令会在当前文件夹中默认找docker-compose.yml文件进行启动,如果自己的yml文件名称不是这个,那就通过-f参数指定yml文件。例如:
docker-compose -f docker-my-compose.yml up
(2)后台构建容器启动:
命令:docker-compose up -d
说明:通过-d参数可以实现后台启动,看不到启动打印的日志信息。该命令会在当前文件夹中默认找docker-compose.yml文件进行启动,如果自己的yml文件名称不是这个,那就通过-f参数指定yml文件。
(3)停止容器:
命令:docker-compose stop
说明:只是停掉docker-compose中定义的容器,但是容器不会删除。该命令会在当前文件夹中默认找docker-compose.yml文件进行启动,如果自己的yml文件名称不是这个,那就通过-f参数指定yml文件。
(4)启动容器:
命令:docker-compose start
说明:将docker-compose中定义的容器启动起来,如果没有容器使用该命令会提示错误,需要用up进行构建启动才正确。该命令会在当前文件夹中默认找docker-compose.yml文件进行启动,如果自己的yml文件名称不是这个,那就通过-f参数指定yml文件。
(5)停止并移除容器:
命令:docker-compose down
说明:不仅停掉docker-compose中定义的容器,还会删除容器、network、volume。该命令会在当前文件夹中默认找docker-compose.yml文件进行启动,如果自己的yml文件名称不是这个,那就通过-f参数指定yml文件。
(6)查看容器列表:
命令:docker-compose ps
说明:该命令会在当前文件夹中默认找docker-compose.yml文件进行启动,如果自己的yml文件名称不是这个,那就通过-f参数指定yml文件。
(7)查看镜像列表:
命令:docker-compose images
说明:通过该命令可以查看该docker-compose.yml文件中定义的镜像及其容器。该命令会在当前文件夹中默认找docker-compose.yml文件进行启动,如果自己的yml文件名称不是这个,那就通过-f参数指定yml文件。
(8)进入到服务中:
命令:docker-compose exec 服务名 bash
说明:通过该命令就可以进入到docker-compose.yml文件中对应定义的服务名的容器中去了。该命令会在当前文件夹中默认找docker-compose.yml文件进行启动,如果自己的yml文件名称不是这个,那就通过-f参数指定yml文件。
(9)创建image:
命令:docker-compose build
说明:通过该命令可以将docker-compose.yml文件中定义的通过本地dockerfile文件定义的image进行创建,然后再通过docker-compose up命令启动的时候会比较快点。另外如果dockerfile有变更后,也是先执行docker-compose build创建新镜像,然后再通过docker-compose up进行启动。该命令会在当前文件夹中默认找docker-compose.yml文件进行启动,如果自己的yml文件名称不是这个,那就通过-f参数指定yml文件。