使用Docker-compose批量操作

1.Docker概述

之前运行一个镜像,需要添加大量的参数,可以通过Docker-Compose编写这些参数。而且Docker-Compose可以帮助我们批量的管理容器。这些信息只需要通过一个docker-compose.yml文件去维护即可,批量操作!!!

2.Docker的下载安装

设置权限

需要将DockerCompose文件的名称修改一下(重命名),给予DockerCompose文件一个可执行的权限

mv docker-compose-Linux-x86_64 docker-compose
chmod 777 docker-compose

配置环境变量

方便后期操作,配置一个环境变量
将docker-compose文件移动到了/usr/local/bin , 修改了/etc/profile文件,给/usr/local/bin配置到了PATH中

mv docker-compose /usr/local/bin

vi /etc/profile
# 添加内容到文件末尾即可,然后保存退出↓
export PATH=$JAVA_HOME:/usr/local/bin:$PATH

# 重新加载配置文件,让其生效↓
source /etc/profile

具体操作

  1. 下载好dockers-compose 文件
    在这里插入图片描述
  2. 将这个文件放入linux的root文件夹,
    使用mv docker-compose /usr/local/bin命令将docker-compose文件移动到了/usr/local/bin , 修改了/etc/profile文件,给/usr/local/bin配置到了PATH中,具体的命令:
mv docker-compose /usr/local/bin

vi /etc/profile
# 添加内容到文件末尾即可,然后保存退出↓
export PATH=$JAVA_HOME:/usr/local/bin:$PATH

# 重新加载配置文件,让其生效↓
source /etc/profile
  1. 输入docker-compose 测试,出现以下页面就安装成功了
    在这里插入图片描述

3 使用docker-compose来管理Mysql和Tomcat容器

新建docker_mysql_tomcat 文件夹

1.进入opt文件夹,安装的东西放到这个文件
2.新建一个docker_mysql_tomcat 文件夹
3.进入这个文件
4.新建一个docker-compose.yml文件
5.赋值yml命令到docker-compose.yml文件中,记住要删除所有的中文注释,防止乱码。

cd /opt/
mkdir docker_mysql_tomcat
cd docker_mysql_tomcat
vi docker-compose.yml

docker-compose.yml文件内容, 要删除所有的中文注释,可以选择复制第二份

version: '3.1'
services:
  mysql:           # 服务的名称
    restart: always   # 代表只要docker启动,那么这个容器就跟着一起启动
    image: daocloud.io/library/mysql:5.7.4  # 指定镜像路径
    container_name: mysql  # 指定容器名称
    ports:
      - 3306:3306   #  指定端口号的映射
    environment:
      MYSQL_ROOT_PASSWORD: root   # 指定MySQL的ROOT用户登录密码
      TZ: Asia/Shanghai        # 指定时区
    volumes:
     - /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql   # 映射数据卷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

没有注释的

version: '3.1'
services:
  mysql:          
    restart: always   
    image: daocloud.io/library/mysql:5.7.4  
    container_name: mysql  
    ports:
      - 3306:3306   
    environment:
      MYSQL_ROOT_PASSWORD: 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

version 字段是表明使用那个版本的compose ,compose 有如下的版本,目前的最新版是 3.7

  • 1
  • 2
  • 2.x
  • 3.x

不同版本的 compose 支持了不同的 docker 版本

4.使用docker-compose命令管理容器

在使用docker-compose的命令时 ,默认会在当前目录下找docker-compose.yml文件

执行命令之前,为了避免冲突,停止所有的容器,然后移除所有的容器↓

docker stop $(docker ps -qa)
docker rm $(docker ps -qa)

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

在这里插入图片描述
通过sqlyog访问数据库服务器成功↓在这里插入图片描述
由于上面配置文件用的数据卷是/绝对路径,故访问首页找不到文件,这个是正常情况。这个在另一篇文张中的,数据卷映射方式二已经说过了。
在这里插入图片描述

5.docker-compose其他命令

# 1. 基于docker-compose.yml启动管理的容器,重要
docker-compose up -d
# 2. 停止并删除容器,重要
docker-compose down

# 3. 停止|开启|重启已经存在的由docker-compose维护的容器,如果上面用down删除容器了,这几个命令用不了
docker-compose stop|start|restart

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

# 5. 查看容器的日志
docker-compose logs -f

以上这些命令要注意在带有docker-compose.yml所在的目录运行,因为默认找的是这个文件,否则报错找不到目录↓

在这里插入图片描述

正确的目录打印日志:
在这里插入图片描述

6.docker-compose配合Dockerfile使用

使用docker-compose.yml文件以及Dockerfile文件在生成自定义镜像的同时启动当前镜像,

并且由docker-compose去管理容器

  1. 新建一个docker_ssm文件夹,内容如下:

在这里插入图片描述
在这里插入图片描述
2. 在docker_ssm文件夹中建docker-compose文件夹,在这个文件夹中建一个docker-compose.yml文件,内容如下

# yml文件
version: '3.1'
services:
  ssm:
    restart: always
    build:            # 构建自定义镜像
      context: ../      # 指定dockerfile文件的所在路径
      dockerfile: Dockerfile   # 指定Dockerfile文件名称
    image: ssm:1.0.1
    container_name: ssm
    ports:
      - 8081:8080
    environment:
      TZ: Asia/Shanghai

3.编写Dockerfile文件

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

4.将ssm.war包方法dockers_ssm文件夹,将ssm.war中的数据源的进行修改

在这里插入图片描述
在这里插入图片描述

5.使用SQLyog连接虚拟机的数据库,新增ssm数据库,导入数据表。

在这里插入图片描述

在这里插入图片描述

7.将docker_ssm文件夹放入虚拟机的opt目录
在这里插入图片描述

8.进入docker-compose目录,执行docker-compose up -d命令
在这里插入图片描述
镜像构建构建成功
在这里插入图片描述
9.访问 http://192.168.159.131:8081/ssm ,可以正常登入

在这里插入图片描述

内容补充

关于运行

# 先启动mysql容器并建立好ssm数据库,然后修改ssm.war包里面连接数据库的配置,
# 拷贝资料文件夹里面的东西到Linux服务器,
# 进入到docker-compose.yml文件所在目录,执行下面的up命令即可↓

# 可以直接启动基于docker-compose.yml以及Dockerfile文件构建的自定义镜像!!!开干即可!!!
docker-compose up -d
# 如果自定义镜像不存在,会帮助我们构建出自定义镜像,如果自定义镜像已经存在,会直接运行这个之前的镜像,坑↑
# 测试访问tomcat,浏览器输入地址http://192.168.1.103:8081可以
# 测试访问项目,浏览器输入地址http://192.168.1.103:8081/ssm可以
# 如果还是无法访问成功,要注意两个问题,一是mysql容器是否启动,而是运行的镜像是不是之前的旧ip的war包镜像!

# 另外,如果想重新构建新镜像用下面的,这个是运行上面的命令,显示出来下面的提示,这里无影响略过↓
# 重新构建自定义镜像
docker-compose build
# 运行当前内容,并重新构建
docker-compose up -d --build

# 上面的构建可以理解为先把旧镜像删掉,构建新镜像,我们也可以不用上面的命令自己来实现这个功能

如果自定义镜像不存在,会帮助我们构建出自定义镜像,如果自定义镜像已经存在,会直接运行这个之前的镜像,这个有点坑,要引起注意↓

运行的镜像如果是之前的旧ip的war包镜像,旧的ip是103,现在的ip是129,ip不对就访问不了Linux虚拟机上的mysql服务器,可以在docker-compose.yml文件所在目录,执行docker-compose logs -f来查看容器的日志来找到报错原因↓

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值