介绍
介绍
前面福哥带着大家学会了使用Dockerfile搭建PHP运行环境、MySQL数据库、Redis数据库和Elasticsearch搜索引擎,大家应该发现了搭建这些服务的时候所进行的操作的步骤都是差不多的。那么按照技术人员追求简单、总结规则最后再技术革新的性格一定会创造一个简单、高效地做这些事情的方法。而今天我们要学习的docker-compose项目就是一个用来高效部署一整套运行环境的开源工具,它是一个基于go语言开发的项目,可以在github上面获取到。
今天福哥就带着大家一起学习一下这个工具docker-compose的使用技巧!
环境
操作系统 | CentOS 7 x86_64 2009 |
服务器 | TFCentOS7x64 |
IP | 192.168.168.68 |
Docker | 18.06.3-ce, build d7080c1 |
Docker网络 | tfnet |
docker-compose | 1.29.2 |
安装
安装
docker-compose是一个开源go语言项目,可以在github上面直接下载。
https://github.com/docker/compose
授权
下载的文件就是一个应用程序,我们只要授权可执行权限就可以使用了!
chmod +x /usr/sbin/docker-compose docker-compose --version
基本格式
语法
docker-compose的配置文件是用YAML格式编写的!默认的docker-compose配置文件就是在当前目录下放一个docker-compose.yml文件,docker-compose工具会自动调用它!
网络
docker-compose是用来管理一整套服务的工具,为了实现各个服务之间的网络访问通畅,docker-compose会强制创建一个docker的自定义网络network,并将全部服务都加入到这个自定义网络network里面。
这个自定义网络network可以让docker-compose自己创建,也可以使用我们创建好的一个。福哥使用的是前面创建的自定义网络tfnet。
networks: default: external: name: tfnet
服务
这是一个用docker-compose搭建的MySQL服务的配置信息!
services: mysql: build: dockerfile: Dockerfile context: ./dockerfile/mysql5.7 image: registry.tongfu.net:5000/mysql:5.7-2.0.0 container_name: tfmysql ports: - 3306:3306 environment: - MYSQL_ROOT_PASSWORD=abcdef volumes: - /tongfu.net/data/docker/data/tfmysql:/var/lib/mysql
福哥把这个MySQL的配置信息的参数逐个说明一下!
参数 | 说明 |
---|---|
mysql | 容器主机名称,对应启动容器命令参数就是“-h” |
build | 当image镜像不存在的时候会根据build的参数动态创建image镜像 |
image | 容器镜像名称 |
container_name | 容器名称,对应启动容器命令参数就是“--name” |
ports | 容器的映射端口,对应启动容器命令参数就是“-p” |
environment | 容器的环境变量,对应启动容器命令参数就是“-e” |
volumes | 容器映射宿主机目录的设置,对应启动容器命令参数就是“-v” |
实例
这是福哥写了一个docker-compose的配置文件实例/tongfu.net/data/dockerfile/docker-compose.yml,这个配置文件把前面学习的PHP、MySQL、Redis和Elasticsearch服务都配置到里面了!
networks: default: external: name: tfnet services: tfphp: build: dockerfile: Dockerfile context: ./tfphp7.4nginx image: registry.tongfu.net:5000/tfphp:7.4-nginx-1.0.0 container_name: tfphp ports: - 80:80 volumes: - /tongfu.net/data/docker/data/tfphp/html:/var/www/html tfmysql: build: dockerfile: Dockerfile context: ./tfmysql5 image: registry.tongfu.net:5000/tfmysql:5.7-1.0.0 container_name: tfmysql ports: - 3306:3306 environment: - MYSQL_ROOT_PASSWORD=abcdef volumes: - /tongfu.net/data/docker/data/tfmysql:/var/lib/mysql tfredis: build: dockerfile: Dockerfile context: ./tfredis image: registry.tongfu.net:5000/tfredis:6.0-1.0.0 container_name: tfredis ports: - 6379:6379 volumes: - /tongfu.net/data/docker/data/tfredis:/var/lib/redis tfelasticsearch: build: dockerfile: Dockerfile context: ./tfelasticsearch image: registry.tongfu.net:5000/tfelasticsearch:6-1.0.0 container_name: tfelasticsearch ports: - 9200:9200 volumes: - /tongfu.net/data/docker/data/tfelasticsearch:/usr/share/elasticsearch/data
基本操作
进入docker-compose目录
首先我们切到docker-compose.yml所在的目录/tongfu.net/data/dockerfile/,这样就免得每次执行docker-compose命令时候还得输入配置文件路径了!
cd /tongfu.net/data/dockerfile/ ls docker-compose.yml
docker rm -f tfphp docker rm -f tfmysql docker rm -f tfredis docker rm -f tfelasticsearch
总结
今天福哥带着大家学习了Docker容器管理工具docker-compose的使用技巧,在单服务器部署服务docker-compose完全可以应付,而且管理起来非常简单~~
那么要是多台服务器上面部署服务用什么工具会比较好呢?后面福哥会教给大家使用k8s(kubernetes)来管理多台服务器组成的服务器集群,敬请期待~~