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获取并运行该软件。 (编辑:桂林站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


