♦️接上一篇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
)
回车,运行结果如下图