♦️接上一篇Docker自定义镜像
之前运行一个镜像,需要添加大量的参数。
可以通过Docker-Compose编写这些参数。Docker-Compose可以帮助我们批量的管理容器。只需要通过一个docker-compose.yml文件去维护即可。
♦️第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
移动成功后cd切换到/usr/local目录查看
再把docker-compose-Linux-x86_64重命名:
mv docker-compose-Linux-x86_64 docker-compose
重命名为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可以看到如下,就说明运行成功
下载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
之前说过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参数,挂载数据卷
上面的缩进有一定的规律:
version和services不缩进
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上,点击详情
往下翻
可以看到,默认的环境变量路径为/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.

发现是镜像地址的问题重新去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 file1 ,cat -A file2)
回车,运行结果如下图