加入收藏 | 设为首页 | 会员中心 | 我要投稿 桂林站长网 (https://www.0773zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

Docker年代来了 你准备好了吗 ?

发布时间:2022-06-01 12:15:43 所属栏目:云计算 来源:互联网
导读:刚刚过去的2014年或许是史上最热的一年,在这火热的年份里,Docker 也好似一支被点燃的火箭,掀起一股股热浪。Docker之所以如此受人瞩目,并不是因为它创造了多么神奇的技术,而是因为它重新定义了软件的交付方式,进而将改变传统开发-测试-部署的软件流程。

 
什么是Docker思维
 
这年头流行思维主义,什么互联网思维、大数据思维格外赚人眼球。这里我们跟风一下,提出一个Docker思维,其实归纳起来就两句话:
 
做为软件使用者,避免直接安装软件包,总是以Docker镜像形式获取软件、以Docker容器形式运行软件。
做为软件开发者,避免直接发布软件包,总是以Docker镜像形式发布到Docker仓库。
怎样理解这两句话?下面通过一个简单的实践来说明。假定现在我们在开发一个Java程序,从编译到运行需要使用以下几个软件工具:1) git,源码版本控制; 2) maven,源码编译; 3) mysql,存储数据库。
 
遵循Docker思维,做为使用者,我们应该避免直接安装git、maven及mysql,而是通过Docker来获取。
 
首先,从github上获取源代码:
 
复制
docker run -it --rm -v "$(pwd)":/app switchback/git-debian git clone https://github.com/spring-by-example/spring-by-example.git /app
1.
运行以上命令将在当前文件夹clone指定github地址的源代码。简单解析一下命令:
 
switchback/git-debian,是git的Docker镜像URL。
-it,指定以交互方式启动容器。
--rm,指定命令结束自动删除容器。
-v "$(pwd)":/app, 指定将宿主机的当前文件夹mount到容器里的/app文件夹。
然后,通过maven来编译源码:
 
复制
docker run -it --rm -v "$(pwd)":/app -w /app docker.cn/docker/maven mvn clean package
1.
运行以上命令将在当前源码文件夹编译maven项目。简单解析一下命令:
 
maven:3.2-jdk-7,是maven的Docker镜像URL。
-w /app,指定容器的工作路径为"/app"。
 搭建mysql数据库:
 
复制
docker run -e MYSQL_ROOT_PASSWORD=mypassword -d -p 3306:3306 docker.cn/docker/mysql
 
运行以上命令将在本机启动一个mysql数据库。简单解析一下命令:
 
docker.cn/docker/mysql,是mysql的Docker镜像URL。
-e MYSQL_ROOT_PASSWORD=mypassword,-e选项用于向Docker容器里注入环境变量,这里通过MYSQL_ROOT_PASSWORD环境变量传递mysql的root密码。
-d,指定后台方式启动容器
-p 3306:3306,指定将容器的3306端口绑定到宿主机的3306端口。
可以看到,三条Docker命令就满足了我们对git/maven/mysql的使用需求,而且可以完全移植到有Docker环境的任意机器。那么,接下来的问题是,如何发布我们的Java程序?
 
遵循Docker思维,做为开发者,应该通过Docker来发布软件。
 
首先,编写一个Dockerfile来制作Docker镜像,它有点类似Makefile的作用:
 
复制
#每个Docker镜像需要基于某个基础镜像来构建
#新镜像的构建操作会在基础镜像上叠加
FROM docker.oa.com:8080/docker/java7
#将源码编译后产生的jar文件拷贝到镜像里
ADD target/myapp.jar /app/myapp.jar
#指定容器的启动命令
CMD java -jar /app/myapp.jar
 
保存以上的Dockerfile,运行以下命令制作镜像,指定镜像名为myapp,版本为1.0:
 
复制
docker build -t myapp:1.0 .
1.
镜像制作完成后,可以提交到Docker仓库,软件发布就完成了:
 
复制
docker push myapp:1.0
1.
可以看到,两条Docker命令加一个Dockerfile就满足了我们对软件的发布需求。更重要的是,使用者可以像我们之前使用git/maven/mysql那样,通过Docker获取并运行该软件。
 

(编辑:桂林站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!