docker-compose

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

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的日志
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Docker