一切皆容器 处处云原生
有什么用
写好容器之间的编排调用关系 ,一个命令直接使用,相当于spring中的application.xml
例如你可以编排先启动elasticsearch再启动kabbinn
还可以一键启动,一键关闭 。
和dockerFile 的区别 ,dockerFile 针对单个容器 .
安装
#查看版本
docker compose version
可以编排先启动顺序 mysql-> redis-> springboot
docker-compose常用命令
-docker-compose -h | 查看帮助 |
-docker-compose up | -启动所有docker-compose服务 |
-docker-compose up -d | -启动所有docker-compose服务并且后台运行 |
-docker-compose down | 停止 删除 容器 网络 卷镜像 |
-docker-compose exec yml {服务id} | 进入容器实例内部 |
-docker-compose ps | 展示当前docker-compose编排过的运行的所有容器 |
-docker-compose top | 展示当前docer-compose编排过的容器进程 |
-docker-compose logs yml {服务id} | 查看容器输出的日志 |
-docker-compose config | 检查配置 |
-docker-compose config -q | 检查配置 有问题才输出 |
-docker-compose restart/start/stop | 重启/启动/停止服务 |
创建一个微服务项目并且上传容器并且运行
FROM java:8
MAINTAINER rabbitcunk
#相当于在容器内生成一个文件夹 ,这个文件夹在主机上有对应的目录(一般后边有一串乱码 保证一个容器一个/tmp 唯一性) ,你用docker inspect找到然后
#就可以同步进行更改
VOLUME /tmp
#解压 并且重命名jar文件
ADD dockerdemo-0.0.1-SNAPSHOT.jar a.jar
#相当于在linux 执行 java -jar a.jar
#touch命令的作用是修改这个文件的访问时间和修改时间为当前时间,而不会修改文件的内容。
RUN bash -c 'touch /a.jar'
ENTRYPOINT ["java","-jar","a.jar"]
EXPOSE 6001
docker 微服务跑起来
docker run -d -p 6001:6001 839806e52f90
引入docker compose
刚刚启动一个服务需要
1.启动mysql,redis (MySQL redis 两容器只能靠地址ping通 不能靠 服务名ping)
2.在springboard项目写死 mysql的地址 和redis 的地址
dockers compose 可以将他们一次性全部管理起来
1.修改springboot yml 文件
docker compose文件
services:
microService:
# 启动容器名称
image: cunk_docker 1.2
# 相当于 -name
container_name: ms01
ports:
- "6001:6001"
#相当于 -v
volumes:
- /bf/usecmps/microService:/data
# 在哪个网络里面 ,在一组网络里面的容器可以使用容器名称互相调用
networks:
- lzy_net
# 他依赖哪几个容器
depends_on:
- redis
- mysql
redis:
image: redis:6.2.6
ports:
- "6379:6379"
volumes:
- /bf/usecmps/redis/redis.conf:/etc/redis/redis.conf
- /bf/usecmps/redis/data:/data
networks:
- lzy_net
command: redis-server /etc/redis/redis.conf
mysql:
image: mysql:8.0.29
environment:
MYSQL_ROOT_PASSWORD: '109922'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
MYSQL_DATABASE: 'demo01'
MYSQL_USER: 'admin'
MYSQL_PASSWORD: '109922'
ports:
- "3306:3306"
volumes:
- /bf/usecmps/mysql/db:/var/lib/mysql
- /bf/usecmps/mysql/conf/my.cnf:/etc/my.cnf
- /bf/usecmps/mysql/init:/docker-entrypoint-initdb.d
networks:
- lzy_net
command: --default-authentication-plugin=mysql_native_password
networks:
lzy_net:
运行: docker compose up -d
停止: docker compose stop
3.容器编排文件自动生成的网络
自动生成的docker镜像
坑:如果有运行失败的直接
docker logs --tail=500 [服务名称或容器id]
查看容器日志