1. 问题描述
你用docker做过什么好玩或者有逼格的事情?
问题结论
docker较底层的docker安装、镜像构建、容器编排、容器发布等,还是刚开始参加工作那2年接触过,至今已3年多时间。互联网公司中,除了基础运维团队,其他研发看到的都是集成的开发环境,晓得底层用的docker或者k8s,但就使用者而言,在网站工具上部署、发布、上线,一个新的镜像部署完成。至于底层如果交互和编排,鬼晓得。基于此,我就简单说说当年基于 docker 的 war 包部署和 jar 包部署,仅供参考。
2. 简述 docker 部署示例
2.1 docker 的使用场景
- 让应用快速打包与容易自动化部署
- 创建轻量、私密的 PAAS 环境
- 实现自动化测试和持续的集成/部署
2.2 war 包部署示例
# 编写 Dockerfile 文件
from tomcat:latest
MAINTAINER sunzc #作者
COPY demo.war /usr/local/tomcat/webapps #放置到tomcat的webapps目录下
# 生成 war 包镜像命令
$ docker build -t demo:v1 . # (. 代表Dockerfile文件所在的路径)
# 启动容器
docker run --name demo -p 8080:8080 -v /home/logs/demo/:/home/logs/demo/ -e TZ=Asia/Shanghai -e spring.profiles.active=local --restart=always -d demo:v1
2.3 jar 包部署示例
# 编写 Dockerfile 文件
FROM keensoft/centos7-java8
MAINTAINER sunzc
# set timezone to PRC
ENV TZ="Asia/Shanghai" LANG=en_US.UTF-8 PRO_ENV="prod"
ADD demo.jar /home/App.jar
ENTRYPOINT java -jar /home/App.jar
# 编写start.sh文件,用于启动jar程序,并且镜像启动后执行
java -jar /home/App.jar
# 生成 jar 包镜像命令
docker build -t demo:v1 .
# 启动容器
docker run --name demo -p 8080:8080 -v -v /home/logs/demo/:/home/logs/demo/ -e TZ=Asia/Shanghai -e spring.profiles.active=local --restart=always -d demo:v1
3. 小结
3.1 Docker特性
- 隔离性:libcontainer(默认容器)=>内核命名空间。
- 安全性:内部(cgroups)| 容器和宿主主机(内核能力机制)。
- 可度量性:cgroups(控制组)→资源度量和分配(用户)。
- 移植性:AUFS(快速更新)→层的概念。
3.2 Docker优点(比较LXC)
- 跨平台可移植性:按统一标准打包(镜像中),可传播。
- 面向应用:优化部署应用(设计哲学)→API,接口及文档(体现)。
- 版本控制:追踪、查询、记录版本信息(应用程序更改史)和回滚版本等。
- 组件复用:组件式搭建(基础镜像)→Python(运行环境) | postgreasql(基础镜像)。
- 共享性:公共的注册服务器(可免费下载源码)。
作者:夕阳雨晴,欢迎关注我的头条号:偶尔美文,主流Java,为你讲述不一样的码农生活。
标签: #docker