4.DockerCompose

介绍Docker-Compose

运行一个镜像,需要添加大量的参数。

  • 这个时候可以通过Docker-Compose编写这些参数。

  • Docker-Compose可以帮助我们批量的管理容器。

  • 只需要通过一个docker-compose.yml文件去维护即可,大大降低了我们使用docker的成本。

Docker-Compose的使用配置

1.去GitHub官网搜索docker-compose,选择需要下载的Docker-Compose版本

https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64

2.下载好后的文件就是一个可执行文件,将下载好的文件,上传到Linux操作系统中。

3.方便后期操作做以下修改

# 挪动文件并改名,给docker执行权限
[root@docker ~]# mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
[root@docker ~]# chmod 777 /usr/local/bin/docker-compose
# 配置环境变量
[root@docker ~]# vi /etc/profile
export PATH=$PATH:/usr/local/bin
[root@docker bin]# source /etc/profile

4.测试一下 在任意目录下输入docker-compose

Docker-Compose应用

1.想要通过Docker-compose管理容器,只需要编写一个yml文件

  • yml文件以key: value方式指定配置信息

  • 多个配置信息以换行+缩进的方式来区分

  • 在docker-compose.yml文件中,不要使用制表符

Docker-Compose管理MySQL和Tomcat容器

mkdir /opt/docker_msyql-tomcat/
cd /opt/docker_mysql-tomcat/
vi docker-compose.yml

version: '3.1'        # Docker-Compose是1.24.1 所以这里填3.1 要是和填写的和对应版本不同编写的内容也会不同
services:             # 代表一个yml文件可以管理多个容器
  mysql:              # 服务的名称
    restart: always   # 代表只要Docker启动,那么这个容器就跟着一起启动
    image: daocloud.io/library/mysql:5.7.4    # 指定镜像下载路径
    container_name: mysql   # 指定容器名称,docker ps 可以看到的容器名称
    ports:          # 端口映射
      - 3306:3306   # 指定端口号的映射,要是映射多个端口往下行编写,格式与这个一致保持对齐
    environment:    # 指定容器的环境
      MYSQL_ROOT_PASSWORD: root   # 指定MySQL的ROOT用户登录密码
      TZ: Asia/Shanghai           # 指定时区
    volumes:    # 映射数据卷
      - /opt/docker_mysql-tomcat/mysql_data:/var/lib/mysql    # 数据卷是可以映射多个的
  tomcat:
    restart: always
    image: daocloud.io/library/tomcat:8.5.15-jre8
    container_name: tomcat
    ports:
      - 8080:8080
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /opt/docker_mysql-tomcat/tomcat_webapps:/usr/local/tomcat/webapps
      - /opt/docker_mysql-tomcat/tomcat_logs:/usr/local/tomcat/logs

2.使用Docker-Compose命令管理容器

在使用docker-compose的命令时,默认会在当前目录下找docker-compose.yml文件
也就是说要是当前目录没有docker-compose.yml文件,docker-compose命令将会不生效

1.基于docker-compose.yml启动管理的容器

[root@docker ~]# docker-compose up -d

2.关闭并删除容器

[root@docker ~]# docker-compose down

3.开启|关闭|重启已经存在的由docker-compose维护的容器

[root@docker ~]# docker-compose start|stop|restart

4.查看由docker-compose管理的容器

[root@docker ~]# docker-compose ps

5.查看日志

[root@docker ~]# docker-compose logs -f

Docker-Compose配合Dockerfile使用

使用docker-compose.yml文件以及Dockerfile文件在生成自定义镜像的同时启动当前镜像,并且由docker-compose去管理容器

docker-compose.yml文件

version: '3.1'
services:
  ssm:
    restart: always
    build:                           # 构建自定义镜像
      context: ../                   # 指定Dockerfile文件所在路径
      dockerfile: Dockerfile         # 指定Dockerfile文件名称
    image: ssm:1.0.1           # 这次的image并不是去中央仓库拉取镜像,而是上面的build构建出的自定义镜像
    container_name: ssm
    ports:
      - 8081:8080
    environment:
      TZ: Asia/Shanghai

Dockerfile文件

from daocloud.io/library/tomcat:8.5.15-jre8
copy ssm.war /usr/local/tomcat/webapps

1.文件配置好后,可以直接启动基于docker-compose.yml以及Dockerfile文件构建的自定义镜像

[root@docker ~]# docker-compose up -d

如果自定义镜像不存在,会帮助我们构建出自定义镜像,如果自定义镜像已经存在,会直接运行这个自定义镜像

如果想重新构建的话,需要使用以下方式

重新构建自定义镜像
docker-compose build
运行前,重新构建
docker-compose up -d --build
原文地址:https://www.cnblogs.com/eba001/p/14295108.html