Docker学习笔记5 -- Docker-compose
1.Docker-Compose
Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!
1.1.初识DockerCompose
Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。格式如下:
version: "3.8"
services:
mysql:
image: mysql:5.7.25
environment:
MYSQL_ROOT_PASSWORD: 123
volumes:
- "/tmp/mysql/data:/var/lib/mysql"
- "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
web:
build: .
ports:
- "8090:8090"
上面的Compose文件就描述一个项目,其中包含两个容器:
- mysql:一个基于
mysql:5.7.25
镜像构建的容器,并且挂载了两个目录 - web:一个基于
docker build
临时构建的镜像容器,映射端口时8090
以上文件中需要注意,第一种构建方式是指定镜像,然后构建,而第二种是通过Dockerfile文件来进行构建的,build . 就是构建当前目录下的Dockerfile文件。
其实DockerCompose文件可以看做是将多个docker run命令写到一个文件,只是语法稍有差异。
1.2.安装DockerCompose
1.github官方网站 搜索Docker compose并下载,找到下载好的二进制文件
https://github.com/docker/compose/releases/download/1.25.5/docker-compose-Linux-x86_64
2.将下载好的文件拖入Linux 并剪切到 /usr/local目录下
mv docker-compose-Linux-x86_64 /usr/local
3.修改名称(为后面方便调用) 并修改其为可执行文件
mv docker-compose-Linux-x86_64 docker-compose
chmod 777 docker-compose
mv docker-compose /usr/local/bin/
4.测试是否安装
$ docker-compose --version
docker-compose version 1.25.5, build 1110ad01
5.卸载
// 如果是 二进制包方式安装的,删除二进制文件即可
sudo rm /usr/local/bin/docker-compose
// 如果是通过 pip 安装的,则执行如下命令即可删除。
sudo pip uninstall docker-compose
1.3.Docker-compose创建容器
通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目。
yml格式描述:
1、yml文件以缩进代表层级关系
2、缩进不允许使用tab只能使用空格
3、空格的个数不重要,只要相同层级的元素左对齐即可(建议2个)
4、大小写敏感
5、数据格式为,名称:(空格)值
一、 k: (空格)v:表示一对键值对(空格不能省略),以空格控制层级关系,只要是左对齐的数据,都是同一级别;
server:
port: 8083
path: /helloBoot
二、数组(用-表示数组中的一个元素):
animal:
- cat
- dag
1.4.示例
用compose的方式管理一个Tomcat容器和MySQL
1.使用cd命令进入opt目录 新建目录docker_mysql_tomcat。
cd /opt
mkdir docker_mysql_tomcat
2.在如上目录中 编写创建 docker-compose.yml配置文件。
vim docker-compose.yml
3.编写内容
version: '3.1'
services:
mysql: # 服务的名称
restart: always # 只要docker启动,容器会随着启动
image: mysql # 指定镜像路径信息(默认官方镜像地址)
container_name: mysql-3306 # 指定容器名称 --name
ports:
- 3306:3306 #指定端口号映射
environment:
MYSQL_ROOT_PASSWORD: root #指定MYSQL ROOT用户的密码
TZ: Asiz/Shanghai #指定时区
volumes:
- /opt/docker_mysql_tomcat/mysql/data:/var/lib/mysql // 映射mysql的数据目录到宿主机,保存数据
- /opt/docker_mysql_tomcat/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
// 把mysql的配置文件映射到容器的相应目录
tomcat:
restart: always
image: tomcat
container_name: tomcat-8080
ports:
- 8080:8080
environment:
TZ: Asiz/Shanghai
volumes:
- /opt/docker_mysql_tomcat/tomcat/webapps:/usr/local/tomcat/webapps
- /opt/docker_mysql_tomcat/tomcat/logs:/usr/local/tomcat/logs
4.启动
docker-compose up -d
默认执行的文件名:docker-compose.yml(且需要在当前上下文路径中) 。如果说文件名不是默认的需要使用下面的指令:
docker-compose -f 文件名.后缀名 up –d
创建成功后,进入到/usr/local/tomcat/webapps里边新建ROOT文件夹,然后在里边新建index.html文件,最好访问测试即可。
5.关闭或删除容器
docker-compose down #关闭并删除容器
docker-compose stop #关闭容器
6.开启容器
docker-compose start
7.查看由docker-compose管理的容器
docker-compose ps
8.查看日志
docker-compose logs -f