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
原文地址:https://www.cnblogs.com/dcy521/p/15390941.html