• Docker compose


    ♦️接上一篇Docker自定义镜像
    在这里插入图片描述
    在这里插入图片描述

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


    1.下载docker-compose

    ♦️第1步去github官网上下载
    github下载docker-compose有点慢,百度网盘:下载docker-compose-Linux-x86_64 1.24.1
    以下步骤看看就行:
    🔹搜索docker-compose
    在这里插入图片描述
    🔹选择most stars最多收藏,点击第一个
    在这里插入图片描述
    🔹选择发行版本
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    ♦️2. 下载好以后拖拽到Xterm中/root目录下
    在这里插入图片描述
    ♦️3. ls查看root目录
    在这里插入图片描述
    发现docker-compose-Linux-x86_64文件存在
    把该文件移动到/usr/local目录下:

    mv docker-compose-Linux-x86_64  /usr/local
    
    • 1

    移动成功后cd切换到/usr/local目录查看
    再把docker-compose-Linux-x86_64重命名:

    mv docker-compose-Linux-x86_64 docker-compose
    
    • 1

    重命名为docker-compose
    ♦️在/usr/local目录下ll查看重命名后的文件的权限
    在这里插入图片描述
    发现文件可读写rw,没有执行权限x
    所以chomd命令修改文件权限
    在这里插入图片描述
    输入chmod 777 docker-compose
    docker-compose文件权限修改为可读可写可执行
    在这里插入图片描述
    接着输入mv docker-compose bin
    把docker-compose移动到当前/usr/local目录的bin目录下
    在这里插入图片描述
    cd bin/查看,移动成功
    接下来输入vi 命令编辑配置文件/etc/profile
    进入编辑模式翻到文件最后一行看到如下图:
    在这里插入图片描述
    在上图方框中的代码进行修改,把路径:
    :/usr/local/bin加到PATH中
    添加位置如下图,在:$PATH
    在这里插入图片描述
    按下esc键,输入:wq回车,退出并保存。

    ♦️输入以下命令重新加载配置文件
    source /etc/profile
    在这里插入图片描述
    切换到任意路径都可以运行docker-compose了
    cd~切换到根目录
    直接输入docker-compose可以看到如下,就说明运行成功
    在这里插入图片描述


    2. 总结下载步骤

    下载Docker-Compose
    ♦️1.去github官网搜索docker-compose,
    下载1.24.1版本的Docker-Compose
    地址:
    https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64

    ♦️2.将下载好的文件,拖拽到Linux操作系统中

    ♦️ 3.需要将DockerCompose文件的名称修改一下,基于DockerCompose文件一个可执行的权限

    mv docker-compose-Linux-x86_64 docker-compose
    
    chmod 777 docker-compose
    
    • 1
    • 2
    • 3

    ♦️ 4、方便后期操作,配置一个环境变量

    🔹将docker-compose移动到/usr/local/bin

    mv docker-compose /usr/local/bin 
    
    • 1

    🔹修改/etc/profile文件,把/usr/local/bin配置到了PATH中

    vi/etc/profile
    
    • 1
    export PATH=SJAVA_HOME:/usr/local/bin:$PATH
    
    • 1

    🔹重新加载配置文件

    source /etc/profile
    
    • 1

    ♦️ 5.测试一下
    在任意目录下输入docker-compose

    3. docker-compose管理MySQL和tomcat容器

    之前说过Docker-Compose帮我们批量的管理容器。只需要通过一个docker-compose.yml文件去维护即可
    ♦️现在来编写docker-compose.yml文件帮我们管理MySQL和tomcat容器

    docker-compose.yml文件的编写格式,
    🔹以key: value的方式来指定配置信息(“:”后面有一个空格)
    🔹多个配置信息以换行+缩进的方式来区分
    🔹编写时不能使用制表符tab键,不能识别

    version是版本号,service用来指定服务有哪些
    其他参数配置信息看后面注释

    version: '3.1'
    services:
      mysql:       #服务的名称
        restart: always     #代表只要docker启动,那么这个容器就跟着一起启动
        image: daocloud. io/library/mysq1:5.7.4 #指定镜像路,在daocloud上复制到
        container_name: mysql   #指定容器名
        ports:
           - 3306:3306    #指定端口号的映射,类似docker run命令的-p参数
        environment:
           MYSQL_ROOT_PASSWORD: root #指定MySQL的ROOT用户登录密码,类似docker run命令的-e参数
           TZ: Asia/Shanghai #指定时区东八区,TZ是TimeZone的缩写
        volumes:
          -/opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql
    #映射数据卷,类似于docker run命令的-v参数,挂载数据卷
      
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    上面的缩进有一定的规律:
    versionservices不缩进
    mysql缩进2个空格
    image、volumes等缩进4个
    image、volumes等的属性值缩进6个

    一个service可以配置多个服务,上面只配置了mysql服务,接下来继续添加tomcat服务

    version: '3.1'
    services:
      mysql:       #服务的名称
        restart: always     #代表只要docker启动,那么这个容器就跟着一起启动
        image: daocloud. io/library/mysq1:5.7.4 #指定镜像路,在daocloud上复制到
        container_name: mysql   #指定容器名
        ports:
           - 3306:3306    #指定端口号的映射,类似docker run命令的-p参数
        environment:
           MYSQL_ROOT_PASSWORD: root #指定MySQL的ROOT用户登录密码,类似docker run命令的-e参数
           TZ: Asia/Shanghai #指定时区东八区,TZ是TimeZone的缩写
       volumes:
          -/opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql
    #映射数据卷,类似于docker run命令的-v参数,挂载数据卷
      tomcat:    #服务器名称
        restart: always
        image: daocloud.io/library/tomcat:8.5.15-jre8   #镜像
        container_name: tomcat   #指定容器名
        ports:
           - 8080:8080   #指定端口
        environment:
           TZ: Asia/Shanghai    #指定时区   
        volumes:   #映射数据卷,类似于docker run命令的-v参数,挂载数据卷
              -/opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps  #webapps和容器映射
              -/opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs  #日志l映射
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    ♦️volumes的值是怎么知道的

    volumes:
       - /opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps
    
    • 1
    • 2

    以上代码/opt/docker_mysql_tomcat/tomcat_webapps是数据卷的路径,如果文件不存在,docker会帮我们创建
    :后面/usr/local/tomcat/webapps是tomcat镜像里面的环境变量的路径,我们是怎么知道的?
    如下图:去DaoCloud上,点击详情

    在这里插入图片描述
    往下翻
    在这里插入图片描述
    可以看到,默认的环境变量路径为/usr/local/tomcat下

    到此,就可以通过docker-compose.yml文件管理mysql容器和tomcat容器

    ♦️docker-compose.yml文件的书写格式了解以后,我们来正式编写

    🔹cd命令切换到/opt目录下,
    mkdir命令新建一个文件夹docker_mysql_tomcat

    在这里插入图片描述
    (注意上图中volumes单词写错了-_-||,写成了voulmes,下次注意)
    🔹cd切换到新建的文件夹docker_mysql_tomcat
    vi docker-compose.yml编辑文件
    在这里插入图片描述
    🔹把上面写过的docker-compose.yml文件的内容全部复制过来,如下:
    在这里插入图片描述
    输入:set nu就可以🈶行号
    接着按esc键,输入:wq回车,保存并退出。

    ♦️docker-compose.yml文件写好以后就可以输入
    docker-compose命令运行了

    🔹先docker stop $(docker ps -qa)关闭所有容器,
    docker rm $(docker ps -qa)删除所有容器
    在这里插入图片描述
    🔹docker ps查看所有运行的容器发现全没了
    🔹运行docker-compose,输入以下命令:
    docker-compose up -d
    运行报错:

    
    [root@localhost docker_mysql_tomcat]# docker-compose up -d
    Pulling mysql (daocloud.io/library/mysq1:5.7.4)...
    ERROR: The image for the service you're trying to recreate has been removed. If                                     you continue, volume data could be lost. Consider backing up your data before                                     continuing.
    
    Continue with the new image? [yN]^CERROR: Aborting.
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述
    发现是镜像地址的问题重新去pull了2个没有pull过的版本
    在这里插入图片描述
    然后vi docker-compose.yml修改一下,按下i进入编辑模式,把复制的右键选择Paste粘贴再image位置,按下esc键,输入:wq保存并退出

    再次输入:docker-compose up -d,回车,运行成功如下图
    在这里插入图片描述
    docker ps查看运行的容器
    在这里插入图片描述
    输入docker ps查看运行的容器,发现配置在docker-compose.yml文件的服务成功运行

    ♦️打开SQLyog
    在这里插入图片描述
    重新连接mysql,
    主机名和ip地址是Xterm连接的ip地址
    端口和密码依据如下图docker-compose.yml文件中的配置的
    在这里插入图片描述
    ♦️导入导出数据库

    ♦️把项目打包为ssm.war,复制到挂载到tomcat容器的数据卷下,也就是docker-compose.yml文件里下图中的路径中
    在这里插入图片描述
    在这里插入图片描述

    浏览器输入http://192.168.199.10:8080/ssm访问,注意输入http,不要输入https
    在这里插入图片描述


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

    docker-compose up -d

    ♦️ 2.关闭并删除容器

    docker-compose down

    在这里插入图片描述
    输入docker-compose down关闭容器
    docker ps -a查看,没有运行的容器

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

    docker-compose start/stop/restart

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

    docker-compose ps

    ♦️5.查看由docker-compose管理的容器的日志

    docker-compose logs -f

    在这里插入图片描述
    上图中
    输入命令docker-compose up -d基于docker-compose.yml启动管理的容器
    输入命令docker-compose stop关闭已经存在的由
    docker-compose维护的容器
    在这里插入图片描述
    上图中
    输入命令docker-compose start开启已经存在的由
    docker-compose维护的容器

    输入命令docker-compose restart重启已经存在的由
    docker-compose维护的容器

    输入命令docker-compose ps查看由docker-compose管理的容器
    输入命令docker-compose logs -f查看由docker-compose管理的容器的日志

    查看日志我们通常去数据卷中映射的路径下查看
    在这里插入图片描述

    如下图
    在docker_mysql_tomcat路径下ls查看
    cd tomcat_log/切换到tomcat_log目录下
    ls查看
    cat命令查看日志文件catalina.2020-04-09.log的内容,并将其显示在屏幕上

    在这里插入图片描述
    cat命令(加上-n参数,把行号也显示到屏幕上,加上-A显示特殊符号,
    例:cat -n file1cat -A file2
    回车,运行结果如下图
    在这里插入图片描述

  • 相关阅读:
    探索直播美颜SDK的未来发展方向:虚拟现实、增强现实与混合
    函数栈帧的创建和销毁
    7Z压缩支持加密
    本地localhost与目标地址跨域问题的解决方法
    家庭理财管理系统设计与实现
    辨别代码能否引发线程安全问题--避免在平时写代码时引发线程安全问题
    Java设计模式总结
    21天学习挑战赛——Python爬虫 selenium自动化操作浏览器
    C++的四种强制类型转换
    刷题笔记(十九)--二叉树:二叉搜索树的修改与构造
  • 原文地址:https://blog.csdn.net/m0_47010003/article/details/127845131