1.Docker概述
之前运行一个镜像,需要添加大量的参数,可以通过Docker-Compose编写这些参数。而且Docker-Compose可以帮助我们批量的管理容器。这些信息只需要通过一个docker-compose.yml文件去维护即可,批量操作!!!
2.Docker的下载安装
-
去github官网搜索docker-compose,下载1.24.1版本的Docker-Compose
-
下载路径:https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64
设置权限
需要将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
具体操作
- 下载好dockers-compose 文件
- 将这个文件放入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
- 输入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去管理容器
- 新建一个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来查看容器的日志来找到报错原因↓