网站qq 微信分享怎么做,django网站开发过程,泾川网站城镇建设规化图,c 手机网站开发文章目录 应用快速部署NginxRedisMySQLTomcat 制作镜像镜像原理基于已有容器创建使用 Dockerfile 创建镜像指令说明构建应用创建 Dockerfile 文件创建镜像 应用快速部署
Nginx
docker run -d -p 80:80 nginx使用浏览器访问虚拟机地址 Redis
docker pull redis
docker run --… 文章目录 应用快速部署NginxRedisMySQLTomcat 制作镜像镜像原理基于已有容器创建使用 Dockerfile 创建镜像指令说明构建应用创建 Dockerfile 文件创建镜像 应用快速部署
Nginx
docker run -d -p 80:80 nginx使用浏览器访问虚拟机地址 Redis
docker pull redis
docker run --name redis -d -p 6379:6379 redis可以使用 Redis 客户端工具连接 连接成功可以看到服务器信息 MySQL
企业中用得最多的是 MySQL 5.7 版本
docker pull centos/mysql-57-centos7
# MYSQL_ROOT_PASSWORD是设置默认登录用户名和密码都是root
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORDroot centos/mysql-57-centos7通过客户端例如 navicat、dbeaver 连接 Tomcat
可以先在 Docker Hub 中搜索 tomcat找到对应的 tomcat 版本和 JDK 版本
# 下载镜像
docker pull tomcat
# 创建tomcat目录
mkdir -p /opt/docker/tomcat/ROOT
cd /opt/docker/tomcat/ROOT
# 创建index.html文件
vim index.html
# 写入简单内容
htmlh1Hello Tomcat in Docker!/h1
/html# 启动容器
docker run -d -p 8080:8080 --name tomcat -v /opt/docker/tomcat:/usr/local/tomcat/webapps tomcat参数说明 -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 镜像原理 基于已有容器创建
docker commit [OPTIONS] 容器名称或ID [镜像名称[:TAG]]
# 示例使用MySQL容器创建镜像
docker commit 7c mysqltest:1.0# 查看镜像
docker images
# 启动容器
docker run -d -p 3306:3306 mysqltest:1.0OPTIONS 参数说明
-a, --author string 作者信息-c, --change list 使用 Dockerfile 创建-m, --message string 提交信息-p, --pause 提交时暂停容器运行 使用 Dockerfile 创建镜像
Dockerfile 是一个文件内容由一行行命令语句组成主要分为四个部分基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。
# 使用基础镜像
FROM ubuntu:latest
# 设置时区
ENV TZAsia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime echo $TZ /etc/timezone# 设置镜像的作者信息
#LABEL maintainerYour Name your.emailexample.com
# 暴露容器的端口。非必需
#EXPOSE 80
# 定义环境变量
#ENV ENV_VARIABLE_NAMEvalue
# 执行更新操作并安装基本软件包。非必需
#RUN apt-get update \
# apt-get install -y \
# software-properties-common \
# build-essential \
# curl# 设置工作目录
WORKDIR /app
# 复制本地文件到容器中
COPY . /app
# 执行容器启动时的命令
CMD [command, arg1, arg2]
# 或者如果需要以可执行文件形式运行应用程序
# CMD [./your_executable]
# 或者如果是需要通过ENTRYPOINT启动的服务
# ENTRYPOINT [entrypoint_script.sh]指令说明
指令说明FROM指定所创建镜像的基础镜像MAINTAINER维护者信息RUN运行命令CMD启动容器时默认执行命令LABEL标签信息EXPOSE声明镜像内服务所监听的端口ENV环境变量ADD复制指定路径下的内容到容器中的路径下可以为URL也可以是文件路径如果为tar文件会自动解压COPY复制宿主机的定路径下的内容到容器中的路径下USER运行容器时的用户名WORKDIR配置工作目录ARG指定镜像内使用的参数 构建应用
需求构建一个 Web 应用通过 docker 来运行
步骤 使用 SpringBoot 搭建应用并提供一个 REST 接口 RestController
public class HelloController {GetMapping(/hello)public String hello(){return Hello Docker!;}
}将应用打包成 jar 包 将 jar 包上传到 Linux 服务器 构建 dockerfile 文件 创建 Dockerfile 文件
vi Dockerfile编辑内容如下
# Spring Boot 运行需要依赖java
FROM java:8
# 复制jar包到容器中
COPY docker-demo-0.0.1-SNAPSHOT.jar docker-demo-0.0.1-SNAPSHOT.jar
# 运行命令
CMD java -jar docker-demo-0.0.1-SNAPSHOT.jar创建镜像
编写完成Dockerfile后可以通过以下命令来创建镜像
docker build [OPTIONS]主要参数如下
-f 指定 Dockerfile 路径默认为当前目录-t 指定生成镜像的标签信息
示例
# 最后的.表示当前目录
docker build -t mywebapp:1.0 .构建过程 # 查看镜像
docker images
# 启动镜像
docker run -d -p 8080:8080 mywebapp:1.0打开浏览器访问