1.docker是通过镜像去创建容器用的
2.Dockerfile是通过别的镜像,增加些操作去自己制作镜像
3.docker-compose可以理解成docker的升级版,docker能做的事情它也能做,同时它还具有编排多个docker的作用。
假如:我们有两个容器,一个是springboot应用,一个是mysql。那么我们会通过docker去创建两个容器,但是我们要求得先启动mysql再启动应用,这时候docker就显得有些无能了,但是docker-compose却有编排的能力。
前提:
1.服务器要先安装好docker-compose
2.寻找一处文件夹作为docker-compose的上下文,在里面创建一个文件叫 docker-compose.yml 大小写一个字都不差,就是spring的application.yml类似,作为默认文件。
3.通过命令 docker-compose up (-d)的方式来启动
我们通过单个容器对比以及多个编排在一起的方式来学习docker-compose
-----------------------------------------------------------------------------------------------------------------
1.mysql
1)docker方式启动
docker run
-v /data/mariadb/conf.d:/etc/mysql/conf.d
-v /data/mariadb/logs:/logs
-v /data/mariadb/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD='compass#123456'
-p 6603:3306
--restart=always
--privileged=true
--name compass-mariadb
-d mariadb:10.4.15
2)docker-compose方式启动
version: "3"
services:
mysql:
image: mariadb:10.4.15
container_name: compass-mariadb
environment:
- MYSQL_ROOT_PASSWORD=compass#123456
privileged: true
restart: always
ports:
- "6603:3306"
volumes:
- mysqlconfig:/etc/mysql/conf.d
- mysqllog:/logs
- /data/mariadb/data:/var/lib/mysql
volumes:
mysqlconfig:
external:
false
mysqllog:
说明一下:我这边通过默认数据卷的方式,用了两个默认数据卷
mysqlconfig mysqllog 可以通过命令 docker volume ls来查看系统所有的数据卷 通过命令docker inspect mysqllog来查询某个数据卷的具体信息,包括路径
2.rabbitmq
1)docker 方式启动
docker run
-e RABBITMQ_DEFAULT_USER=compass
-e RABBITMQ_DEFAULT_PASS=compass123456
-p 16672:15672
-p 6672:5672
--restart=always
--privileged=true
--name compass-rabbitmq
-d registry.kpmg.com/rabbitmq:3.8.3-management
2)docker-compose启动
version: "3"
services:
rabbit-mq:
image: registry.kpmg.com/rabbitmq:3.8.3-management
container_name: compass-rabbitmq
environment:
- RABBITMQ_DEFAULT_USER=compass
- RABBITMQ_DEFAULT_PASS=compass123456
privileged: true
restart: always
ports:
- "16673:15672"
- "6673:5672"
3.redis
1)docker方式启动
version: "3"
services:
redis:
image: harbor.cn.kworld.kpmg.com/library/redis:6.0.9
container_name: shared-redis
command: redis-server --appendonly yes --requirepass 123456
restart: always
ports:
- "16379:6379"
volumes:
- /apps/redis/data:/data
2)docker-compose方式启动
version: "3"
services:
redis:
image: harbor.cn.kworld.kpmg.com/library/redis:6.0.9
container_name: my-redis
command: redis-server --appendonly yes --requirepass 123456
restart: always
ports:
- "26379:6379"
volumes:
- redisdata:/data
volumes:
redisdata:
总结:其实docker-compose就是另一种docker方式的写法
真实运行效果:
1 文件位置
2.分别到不同的文件夹下去执行命令 docker-compose up -d
3.指定文件去启动 docker-compose -f docker-compose.yml up -d
4.最后查询