docker-compose

docker-compose

1、什么是docker-compose

实现对docker容器集群快速编排,定义这个项目用到的多个容器

快速编排:站在项目角度将一组相关联容器整合在一起,对着组容器进行按照指定顺序启动,compose是对于多个docker容器管理

2、如何去使用docekr-compose

docker-compose.yml就是一个应用project,

Project:项目,就是由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件中定义
Service:一个项目中的某一个容器,称之为一个服务。实际上可以包含若干运行相同镜像的容器实例

3、docker-compose安装

注意:只有linux平台上在安装docker时候没有安装docker-compose,像window、macos安装docker时候会自动安装compose

a、在线安装

	sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose 
		
	sudo chmod +x /usr/local/bin/docker-compose	修改权限

	(echo $PATH	配置环境变量的地方 /usr/local/bin/    这个不用执行)

b、离线安装
	下载docker-compose脚本
	放入/usr/local/bin/
	修改权限 sudo chmod +x /usr/local/bin/docker-compose

docker-compose -v	查看是否安装成功

4、docker-compose应用

a、创建一个项目    mkdir dorm
b、在dorm目录创建一个docker-compose.yml文件
	version:代表的是docker-compose与docker的对应关系,可以去这个找 https://docs.docker.com/compose/compose-file/compose-file-v3/

5、编写docker-compose文件

# 代表使用docker-compose的项目的版本号
version: "3.0"

services:
 tomcat:
  image: tomcat:8.0 #代表使用的哪个镜像,类似于docker run,指定镜像名称	 
  ports: #代表宿主机和容器中端口映射,类似于docker run -p 参数
   - 8080:8080
 tomcat01:
  image: tomcat:8.0 #代表使用的哪个镜像,类似于docker run,指定镜像名称	 
  ports: #代表宿主机和容器中端口映射,类似于docker run -p 参数
   - 8081:8080
 运行compose文件,要进入docker-compose所在的文件夹,
 docker-compose up -d	运行,运行的时候会自动去找当前文件路径的docker-compose文件运行
 docker-compose down	停止,并清除缓存。down的时候会先将容器stop,再将容器remove。删除容器一样

启动完成会直接运行两个tomcat容器
在这里插入图片描述
在往yml文件中加入redis和mysql

# 代表使用docker-compose的项目的版本号
version: "3.0"

services:
 tomcat:
  container_name: tomcat01 #代表给容器指定一个别名,类似于 docker run --name
  image: tomcat:8.0 #代表使用的哪个镜像,类似于docker run,指定镜像名称	 
  ports: #代表宿主机和容器中端口映射,类似于docker run -p 参数
   - 8080:8080
 tomcat01:
  image: tomcat:8.0 #代表使用的哪个镜像,类似于docker run,指定镜像名称	 
  ports: #代表宿主机和容器中端口映射,类似于docker run -p 参数
   - 8081:8080

 redis:
  image: redis:5.0.12
  ports:
   - 6379:6379

 mysql:
  image: mysql:5.6
  ports:
   - 3306:3306
  environment: #代表给当前容器启动指定环境,类似于docker run -e MYSQL_ROOT_PASSWORD=123456
   - "MYSQL_ROOT_PASSWORD=123456"
  volumes: #代表给当前容器和宿主机指定数据卷,类似于docker run -v 
   #- /home/mysqldata1:/var/lib/mysql #注意:docker-compose中使用绝对路径要求 绝对路径必须先创建才能使用
   - mysqlData:/var/lib/mysql #使用别名的方式构建数据卷
   

volumes:
 mysqlData: #声明数据卷别名,声明之后会自动创建

注意:使用mysql别名数据卷方式,想要自动生成的数据卷位置,
docker volume ls 查询所有数据卷
docker inspect dorm_mysqlData 查看数据卷的元数据
在这里插入图片描述

6、docker-compose中常用的模板指令

build:构建,通过docker-compose在启动容器之前先根据dockerfile构建镜像,然后根据构建的镜像去启动容器
command:覆盖容器启动后默认执行的命令,类似于docker run image 覆盖的命令
depends_on:书写依赖的服务,启动的先后问题。要等tomcat先启动完成之后,apps才会启动。但是不会等待到完全启动,等到大约启动完成
environment:指令 用来给容器启动指定环境变 相当于docker run -e 选项
env_file:指令 用来给容器启动指定环境变 相当于docker run -e 选项
expose:用来指定构建镜像过程中容器暴漏的端口号,一般不使用
image:启动容器使用的镜像
networks:用来指定启动容器使用的网桥,相当于docker run --network 。会自动生成,docker network ls 查看
ports:用来指定宿主机与容器的端口映射  相当于docker run -p
volumes:用来指定宿主机中的目录与容器中的目录的映射  相当于docker run -v
restart:指定docker服务总是运行 相当于docker run --restart=always

environment形式书写:
在这里插入图片描述
env_file形式书写:
在这里插入图片描述

network
docker network ls 查看所有的网络,配置了之后会自动生成一个network
在这里插入图片描述
docker inspect dorm_default 查看详细信息,可以看到给每一个容器都分配的有一个ip
在这里插入图片描述
可以看到每一个容器都分有一个ip。就可以进入容器内 互相访问。
比如进入容器tomcat01: docker exec -it fb1 bash
访问 dorm_tomcat01_1: curl http://172.21.0.3:8080 就可以访问成功

docker-compose相关的命令

docker-compose 命令 项目/项目中某个容器 没有特殊说明,都是对项目的操作

1、up  -d(后台运行)
  docker-compose up 启动项目中所有容器。
  docker-compose up  [服务id]	,----------只启动这个服务
  作用: 它将尝试自动完成包括构建像, (新)创建服务,启动服务,并关联服务相关容器的一系列操作
2、down
  docker-compose down 启动项目中所有容器进行操作
  docker-compose down [服务id]	,----------只关闭这个服务
  作用:关闭容器,并移除网络/网桥 network
3、exec
  docker-compose exec [服务id]  bash
  作用:进入服务内部
4、ps
  docker-compose ps
  作用:列出所有运行的服务
5、restart
  docker-compose restart  重启所有项目
  docker-compose restart [服务id]  重启某个服务
  作用:重启整个项目或者重启指定id服务
6、rm    
  docker-compose rm 删除所有项目
  docker-compose rm[服务id]  删除指定的项目
  作用:删除整个项目或者删除指定id服务。只能删除停止的容器,先stop
7、start
  docker-compose start [服务id]
  作用:启动已经存在的服务容器
8、stop
  docker-compose stop [服务id]
  作用:停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器
9、top
  docker-compose top [服务id]
  作用:查看整个项目中所有服务容器内运行进程或者指定服务容器进程
10、pause (暂停)	unpause (恢复)
   docker-compose pause/unpause [服务id]
   作用:暂停和恢复真个项目的所有服务,或者某个服务id
 11、logs 
   docker-compose logs -f(实时) [服务id]
   作用:查看整个项目中所有服务运行日志,或者指定服务id的日志
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值