使用docker快速部署Nginx、Redis、MySQL、Tomcat及制作镜像
应用快速部署
Nginx
使用浏览器访问虚拟机地址
Redis
可以使用 Redis 客户端工具连接
连接成功可以看到服务器信息
MySQL
企业中用得最多的是 MySQL 5.7 版本
通过客户端例如 navicat、dbeaver 连接
Tomcat
可以先在 Docker Hub 中搜索 tomcat,找到对应的 tomcat 版本和 JDK 版本
参数说明:
-p 8080:8080 :将容器的 8080 端口映射到主机的 8080 端口
-p XXX:YYY
:前面的 XXX 指的是宿主机的端口,后面的 YYY 指的是容器中的端口-v /opt/docker/tomcat:/usr/local/tomcat/webapps 将主机中 /opt/docker/tomcat 目录挂载到容器的 webapps
用浏览器打开 8080 端口
制作镜像
镜像原理
思考:
Docker 镜像本质是什么?
是一个分层文件系统
Docker 中一个 centos 镜像为什么只有200MB,而一个 centos 操作系统的 iso 文件要几个G ?
Centos 的 iso 镜像文件包含 bootfs 和 rootfs,而 docker 的 centos 镜像复用操作系统的 bootfs,只有 rootfs 和其他镜像层
Docker 中一个 tomcat 镜像为什么有 600MB,而一个 tomcat 安装包只有 10多MB?
由于 docker 中镜像是分层的,tomcat 虽然只有10多MB,但他需要依赖于父镜像和基础镜像,所有整个对外暴露的 tomcat 镜像大小 600多MB
镜像原理
基于已有容器创建
OPTIONS 参数说明:
-a, --author string :作者信息
-c, --change list :使用 Dockerfile 创建
-m, --message string :提交信息
-p, --pause :提交时暂停容器运行
使用 Dockerfile 创建镜像
Dockerfile 是一个文件,内容由一行行命令语句组成,主要分为四个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。
指令说明
指令 | 说明 |
---|---|
FROM | 指定所创建镜像的基础镜像 |
MAINTAINER | 维护者信息 |
RUN | 运行命令 |
CMD | 启动容器时默认执行命令 |
LABEL | 标签信息 |
EXPOSE | 声明镜像内服务所监听的端口 |
ENV | 环境变量 |
ADD | 复制指定路径下的内容到容器中的路径下,可以为URL,也可以是文件路径,如果为tar文件,会自动解压 |
COPY | 复制宿主机的定路径下的内容到容器中的路径下 |
USER | 运行容器时的用户名 |
WORKDIR | 配置工作目录 |
ARG | 指定镜像内使用的参数 |
构建应用
需求:构建一个 Web 应用,通过 docker 来运行
步骤:
使用 SpringBoot 搭建应用,并提供一个 REST 接口
将应用打包成 jar 包
将 jar 包上传到 Linux 服务器
构建 dockerfile 文件
创建 Dockerfile 文件
编辑内容如下:
创建镜像
编写完成Dockerfile后,可以通过以下命令来创建镜像:
主要参数如下:
-f :指定 Dockerfile 路径,默认为当前目录
-t :指定生成镜像的标签信息
示例:
构建过程:
打开浏览器访问