当前位置: 代码网 > 服务器>服务器>云虚拟主机 > 使用docker快速部署Nginx、Redis、MySQL、Tomcat及制作镜像的方法

使用docker快速部署Nginx、Redis、MySQL、Tomcat及制作镜像的方法

2024年11月25日 云虚拟主机 我要评论
应用快速部署nginxdocker run -d -p 80:80 nginx使用浏览器访问虚拟机地址redisdocker pull redisdocker run --name redis -d

应用快速部署

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_password=root 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
# 写入简单内容
<html>
	<h1>hello 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.0

options 参数说明:

  • -a, --author string :作者信息
  • -c, --change list :使用 dockerfile 创建
  • -m, --message string :提交信息
  • -p, --pause :提交时暂停容器运行

使用 dockerfile 创建镜像

dockerfile 是一个文件,内容由一行行命令语句组成,主要分为四个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。

# 使用基础镜像
from ubuntu:latest
# 设置时区
env tz=asia/shanghai
run ln -snf /usr/share/zoneinfo/$tz /etc/localtime && echo $tz > /etc/timezone
# 设置镜像的作者信息
#label maintainer="your name <your.email@example.com>"
# 暴露容器的端口。非必需
#expose 80
# 定义环境变量
#env env_variable_name=value
# 执行更新操作并安装基本软件包。非必需
#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

打开浏览器访问

到此这篇关于使用docker快速部署nginx、redis、mysql、tomcat以及制作镜像的文章就介绍到这了,更多相关docker部署nginx、redis、mysql、tomcat内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com