Docker compose

♦️接上一篇Docker自定义镜像
Docker compose_第1张图片
Docker compose_第2张图片

之前运行一个镜像,需要添加大量的参数。
可以通过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
Docker compose_第3张图片
选择most stars最多收藏,点击第一个
Docker compose_第4张图片
选择发行版本
Docker compose_第5张图片
Docker compose_第6张图片
Docker compose_第7张图片
Docker compose_第8张图片

♦️2. 下载好以后拖拽到Xterm中/root目录下
Docker compose_第9张图片
♦️3. ls查看root目录
Docker compose_第10张图片
发现docker-compose-Linux-x86_64文件存在
把该文件移动到/usr/local目录下:

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

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

mv docker-compose-Linux-x86_64 docker-compose

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

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


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

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

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

mv docker-compose /usr/local/bin 

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

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

重新加载配置文件

source /etc/profile

♦️ 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参数,挂载数据卷
  

上面的缩进有一定的规律:
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映射

♦️volumes的值是怎么知道的

volumes:
   - /opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps

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

Docker compose_第19张图片
往下翻
Docker compose_第20张图片
可以看到,默认的环境变量路径为/usr/local/tomcat下

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

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

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

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

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

docker stop $(docker ps -qa)关闭所有容器,
docker rm $(docker ps -qa)删除所有容器
Docker compose_第24张图片
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.

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

再次输入:docker-compose up -d,回车,运行成功如下图
Docker compose_第27张图片
docker ps查看运行的容器
Docker compose_第28张图片
输入docker ps查看运行的容器,发现配置在docker-compose.yml文件的服务成功运行

♦️打开SQLyog
Docker compose_第29张图片
重新连接mysql,
主机名和ip地址是Xterm连接的ip地址
端口和密码依据如下图docker-compose.yml文件中的配置的
Docker compose_第30张图片
♦️导入导出数据库

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

浏览器输入http://192.168.199.10:8080/ssm访问,注意输入http,不要输入https
Docker compose_第32张图片


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

docker-compose up -d

♦️ 2.关闭并删除容器

docker-compose down

Docker compose_第33张图片
输入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_第34张图片
上图中
输入命令docker-compose up -d基于docker-compose.yml启动管理的容器
输入命令docker-compose stop关闭已经存在的由
docker-compose维护的容器
Docker compose_第35张图片
上图中
输入命令docker-compose start开启已经存在的由
docker-compose维护的容器

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

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

查看日志我们通常去数据卷中映射的路径下查看
Docker compose_第36张图片

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

Docker compose_第37张图片
cat命令(加上-n参数,把行号也显示到屏幕上,加上-A显示特殊符号,
例:cat -n file1cat -A file2
回车,运行结果如下图
Docker compose_第38张图片

你可能感兴趣的:(微服务架构,docker)