刘思帅优秀作者
原创内容 来源:小居数码网 时间:2024-08-09 00:15:01 阅读() 收藏:49 分享:68 爆
导读:您正在阅读的是关于【数码知识】的问题,本文由科普作家协会,生活小能手,著名生活达人等整理监督编写。本文有2113个文字,大小约为8KB,预计阅读时间6分钟。
我们知道,Docker的出现,极大地简化了从开发到运维的交付过程,因为它可以使得开发交给运维的是软件程序以及软件程序所依赖的环境,即Docker镜像,而不仅仅是软件程序
上一篇文章,我们认识了Dockerfile,知道了它的角色以及Dockerfile的指令,也通过两个小实践,带领大家了解到该如何使用Docker构建一个镜像
不过,你肯定觉得还不是很“过瘾”,为啥?因为那两个小实践,并没有体现出它真正的作用—将软件即软件程序依赖的环境打包到一起,随处部署,以简化交付流程
那么今天呢,我们就来见证一下这个作用。将一个使用到mariadb的Spring Boot项目,构建为一个镜像,直接运行这个镜像,来完成项目的部署
开始之前,我们先分别来看看只构建MariaDB的环境和只构建Spring Boot项目(不依赖数据库)的过程,由简单到复杂,层层递进,逐步深入理解其步骤
一 MariaDB
MariaDB环境构建
先来介绍一下MariaDB
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品
MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL
据我所知,很多企业现在已渐渐由Mysql转为MariaDB数据库
接下来,我们正式开始MariaDB环境的构建
1 编写Dockerfile文件
FROM centosVOLUME ["test1", "test2", "/mylog/test3"]ENV MYPATH /usr/localWORKDIR $MYPATHRUN yum install -y mariadb-serverEXPOSE 3306CMD /bin/bash
说明
1)基于centos镜像
2)创建test1、test2以及/mylog/test3,这三个挂载目录(在这里无实际意义,只是为了演示VOLUMN关键字的作用)
3)声明环境变量MYPATH,值为/usr/local
4)进入到/usr/local目录下
5)使用yum安装mariadb-server
6)暴露端口3306
7)进入容器目录/bin/bash
2 构建镜像
执行命令
docker build -f Dockerfile -t mycentos:1.2 .
进行镜像的构建
其中docker build为构建镜像的Docker指令
-f Dockerfile,表示指定当前目录下的Dockerfile文件
-t mycentos:1.2,表示构建的镜像名称和版本分别为mycentos和1.2
最后的一点,表示在当前目录进行构建
下面为具体的构建步骤
1)前五步
2)后面两个步骤
显然,镜像已成功构建
3 查看镜像
执行docker images 查看本地镜像,如下所示
mycentos:1.2这个镜像已成功创建
4 运行镜像
执行命令
docker run -it -v /Users/wangjie/Downloads/documents/mydocker:/test1 --privileged=true mycentos:1.2 /sbin/init
启动镜像
5 验证
执行docker ps,发现该镜像已启动,并存在其对应的容器号
进入这个容器,执行systemctl status mariadb,验证mariadb环境。我们发现已安装成功
后面就可以进行设置密码,初始化数据库的操作步骤
好了,完成得比较轻而易举
接下来,我们进入Spring Boot项目打包为镜像的步骤
二 项目
Spring Boot项目打包为镜像
1 编写Dockerfile文件
FROM openjdk:8-jdk-alpineVOLUME /tmpARG JAR_FILE=eureka-server-0.0.1-SNAPSHOT.jarCOPY ${JAR_FILE} eureka-server-0.0.1-SNAPSHOT.jarEXPOSE 8762ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar /eureka-server-0.0.1-SNAPSHOT.jar ${0} ${@}"]
说明
1)基于jdk8镜像构建
2)创建/tmp挂载目录
3)创建参数JAR_FILE,默认值为eureka-server-0.0.1-SNAPSHOT.jar
4)将eureka-server-0.0.1-SNAPSHOT.jar包拷贝到镜像根目录
5)暴露8762端口
6)执行java -jar eureka-server-0.0.1-SNAPSHOT.jar,完成项目的启动
2 构建镜像
进入项目的target目录(jar包存在的目录),执行命令
docker build -f ../Dockerfile -t myeureka:1.0 .
运行如下:
显然,镜像已成功构建
3 查看镜像
发现镜像myeureka:1.0已存在
4 启动镜像
执行命令
docker run -it -p 8762:8762 myeureka:1.0 /bin/bash
启动镜像,日志如下:
我们发现,服务已正常启动。访问页面:
页面也已正常显示,表示该项目已通过docker构建为镜像、并成功启动
接下来,就进入今天的真正主题,使用Dockerfile来完成一个完整业务项目的镜像构建与启动
三 项目
程序+组件(Mariadb)构建
其实步骤都一样,需要经历Dockerfile编写,镜像构建以及镜像启动三个步骤,只是过程中需要分别考虑程序和组件而已
先来介绍一下这个后端程序druid_demo,是杰哥之前练习druid连接池时创建的一个demo项目,里面使用jpa进行mysql数据库的操作,我先来换成mariadb,配置如下
spring.datasource.url=jdbc:mariadb://127.0.0.1:3306/adp_test?characterEncoding=utf8spring.datasource.username=rootspring.datasource.password=123456
具体,就不细说啦,这个完整的项目我也会放到github上面去,大家需要可以down下来自己试试
1 编写Dockerfile文件
FROM centosENV MYPATH /usr/localWORKDIR $MYPATHRUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel mariadb-server#RUN yum install -y mariadb-serverVOLUME /tmpARG JAR_FILE=druid_demo-0.0.1-SNAPSHOT.jarCOPY ${JAR_FILE} /druid_demo-0.0.1-SNAPSHOT.jarEXPOSE 3306EXPOSE 8080CMD /bin/bash
说明
1)基于centos镜像
2)声明环境变量MYPATH,值为/usr/local
3)进入到/usr/local目录下
4)使用yum安装jdk8以及mariadb-server
6)将打好的jar包拷贝到容器根目录
7)分别暴露端口3306,8080
8)进入容器目录/bin/bash
2 构建镜像
进入项目target目录,执行命令
docker build -f ../Dockerfile2 -t druid_demo:0.0.1-SNAPSHOT .
进行镜像的构建,执行过程如下:
3 查看镜像
运行docker ps,查看本地镜像
发现,这个镜像已成功构建,接下来启动这个镜像
4 运行镜像
执行命令
docker run -it -p 8888:9999 --privileged=true druid_demo:0.0.1-SNAPSHOT /sbin/init
运行该镜像,即创建容器,其中该启动命令指定了容器中9999映射到主机端口为8888
5 进入容器
6 更改配置(可选)
若要使mariadb使用utf8编码,则可以分别操作如下步骤进行文件配置的修改
1)修改 /etc/my.cnf.d/client.cnf 文件
在内容[client] 下加一行配置 default-character-set=utf8
最终内容
2)修改 /etc/my.cnf.d/mysql-clients.cnf 文件
在[mysql] 下加一行配置 default-character-set=utf8
最终内容如下
3)修改/etc/my.cnf.d/mariadb-server.cnf文件
在 [mysqld] 下添加配置
collation-server = utf8_general_ciinit-connect='SET NAMES utf8'character-set-server = utf8sql-mode = TRADITIONAL
最终内容如下
7 启动mariadb
分别执行
systemctl start mariadbsystemctl status mariadb
启动mariadb,并查看状态
8 修改密码
初始的root密码为空,我们需要执行mysql_secure_installation,修改密码
修改成功,新密码为123456
9 验证连接
执行mysql -uroot -p123456
10 初始化sql
由于代码中只使用到了adp_test数据库中的一个表t_user2,因此我们分别创建adp_test数据库和t_user2表,创建语句如下:
create database if not exists adp_test;create table t_user2 (id int(11) primary key,name varchar(30),age int(20));
并插入一条记录
insert into t_user2 values(1,"wangjie",21);
最终的效果为:
好了,数据库环境已准备好,接下来试着启动程序
11 启动程序
执行命令
java -jar -Xmx128m druid_demo-0.0.1-SNAPSHOT.jar --server.port=9999
完成程序的启动
查看日志,项目的确已成功启动
12 访问页面
页面正常访问,也就是我们成功的标志!
那么,到这里,我们就顺利完成了将后端项目和其使用到的mariadb打包到一个镜像,启动镜像,并最终完成启动项目的过程
四 总结
上面就是小居数码小编今天给大家介绍的关于(docker将当前环境打包成镜像)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。
94%的朋友还想知道的:
(494)个朋友认为回复得到帮助。
部分文章信息来源于以及网友投稿,转载请说明出处。
本文标题:docker怎么运行镜像(docker将当前环境打包成镜像):http://sjzlt.cn/shuma/153911.html