DOCKER

docker高级篇-docker-compose容器编排介绍及实战

Docker-compose是什么?能干嘛?解决了哪些痛点?是什么?Docker-compose是Docker官方推出的一个工具软件,可以管理多个Docker容器组成的一个应用。你需要编写一个一个YAML格式的配置文件:docker-compose.yml。写好多个容器之间的调用关系。然后,只需要一个命令,就能同时启动/关闭这些容器了。怎么理解:能干嘛?docker建议我们每一个容器只运行一个服务

Docker-compose是什么?能干嘛?解决了哪些痛点?

8307b59a65c92ea1846331f1d05ef558.png

是什么?

Docker-compose是Docker官方推出 的一个工具软件,可以管理多个Docker容器组成的一个应用。你需要编写一个一个YAML格式的配置文件:docker-compose.yml。写好多个容器之间的调用关系。然后,只需要一个命令,就能同时启动/关闭这些容器了。

怎么理解:

c178d71049702e2357636a971e9de232.png

能干嘛?

docker建议我们每一个容器只运行一个服务,因为docker容器本身占用资源极少,所以最好是将每一个服务单独地分割,但是这样,我们面临了一个问题:

3401a6a1f18206dc6265d4c90c968b6e.png

去哪下?

官方地址:

https://docs.docker.com/compose/compose-file/compose-file-v3/

官方下载:

https://docs.docker.com/compose/install/

安装步骤:

1:下载

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2:给目录赋权限

chmod +x /usr/local/bin/docker-compose

3:查看compose的版本号

docker-compose --version

卸载步骤:

rm /usr/local/bin/docker-compose

compose核心概念

一个文件,两个要素:

一个文件:docker-compose.yml

两个要素:

服务*(service):一个个应用容器实例,比如订单服务、库存服务、mysql容器、nginx容器等

工程(project):由一组关联的应用容器组成一个完整的业务单元,在docker-compose.yml文件中定义

7dd6e02149e562d89e4b636478951707.png

compose使用的三个步骤

1:编写Dockerfile定义各个微服务应用并构建出对应的镜像文件

2:使用docker-compose.yml定义一个完整业务单元,安排好整个应用中的各个容器服务

3:最后 ,执行docker-compose up命令,来启动并运行整个应用程序,完成部署上线

compose常用命令b794ecb40b2f09cd949f7d1d2936eea2.png

compose编排微服务

需求描述:

user服务,增删改查。查询的时候,如果缓存中,没有就去数据库中查询。

注意:数据库使用docker中mysql的,redis也使用docker里面的。

我们不使用docker-compose情况下:

启动mysql容器: 

docker run -d -p 3306:3306 --privileged=true -v /root/mysql/log:/var/log/mysql -v /root/mysql/data:/var/lib/mysql -v /root/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql57 mysql:5.7

03a64b7f9e019de3062b4d724a5d8258.png

启动redis容器:

docker run -p 6379:6379 --name reids608 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app
/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf

cd51880c0318dd9dca32d01fa66d55f8.png

本地编写完用户微服务后,mvn package后,上传的docker的宿主机后,构建镜像:

docker build -t order:1.0.2 

8e0d29e2cfd1c63161b70ec9fbcffd70.png

启动镜像:

docker run -d -p 6001:6001 be1face5d825

97d0d53e23c2942d23290bcc8cc2ef73.png

docker ps查看是否启动成功:

2b24edc14f4dbcd6fb4fb2ad6436d866.png

发现三个服务都启动了。

所以我们可以得到如下对比:

06a7b12a105da455c3d59bb4d1943bca.png

启

原创不易,完成人机校验,阅读全文

相关推荐