Docker实践应用及构建
Docker简介:
可以理解成一个“应用程序化的虚拟机”。我们如果把虚拟机比喻成公寓的一个个房间(公寓每个房间都有浴室(IO)),docker就相当于太空舱,所有人共享大厅,浴室(系统IO)等资源,但是每个人又有自己的房间(各自的项目环境),互不影响。Docker可以节省大量的磁盘空间以及其他系统资源,运行起来也快得多。
应用:
实现操作:比如说我的JAVA程序需要配置JAVA JDK,Tomcat等环境,我可以把我的环境打包成一个简单的镜像。镜像是从docker官网仓库上Push下来的一个Liunx系统,我可以将镜像打开(转化为容器),然后在这上面用命令行,或者用构建文档在上面添加我的JDK等,最后又可以将容器转化成镜像,保存在dockerhub仓库里(功能类似GitHub仓库)。总结起来就是,我做成了一个(迷你linux+ 项目环境+ 项目的Docker镜像)保存在DockerHub。
操作用途:Github可以和其他工具搭配做成持续集成,docker可以用于持续交付。例如一个测试,用户等需要使用我的软件或者服务器,他可以下载一个Docker,把我的镜像Push下来,我的运行环境已经部署好了,他直接用docker打开就可以运行我部署在上面的软件了。不需要在主机上配置其他的环境。
交付功能:
当我的软件或者项目或者环境有改动,用户或者测试师只要基于以前的镜像push最新的功能模块就可以运行新版软件了。因此,docker可以理解是用作持续交付高延展,可伸缩性强的项目工具。
● Docker可以通过端口映射,并与主机共享IP
● Docke是无状态化的,一般数据库不建议放在容器里,防止容器中断,迭代,等情况丢失数据
目前使用原因:
● 不同环境沙盒化:比如我的系统同时需要JAVA7 与JAAV8;
● 快速开发交付,环境配置
● 服务器迁移
构建:
对于新手而言,个人建议自己先pull一个原始的ubuntu镜像自己构建,当然用Dockfile也是可以的,不过自己从0开始构建当然会更熟悉一点。
步骤:
● 先pull一ubuntu系统:docker pull ubuntu
系统会自动选择最新镜像版本
● 安装JAVA 1.8:安装ppa:
● 输入命令:sudo add-apt-repository ppa:webupd8team/java
● 输入命令:sudo apt-get update
安装jdk
● 输入命令:sudo apt-get install oracle-java8-installer
验证安装是否成功:
● java -version
JAVA 环境变量:
编辑/etc/profile文件,在文件末尾添加如下3行:
export JAVA_HOME=/usr/lib/jvm/java-8-oracle(注意:java-8-oracle以文件目录名为准)
export JRE_HOME=/usr/lib/jvm/java-8-oracle/jre
export PATH=PATH
保存,执行:
source /etc/profile 让文件生效
打包:
docker commit 容器ID 打包后镜像名:版本号
docker commit -a "runoob.com" -m "my apache" 容器名称或id 打包的镜像名称:标签
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
使用docker tag 命令为本地镜像添加新的标签
改变镜像标签: docker tag image1:latest(本地镜像)rhl/image1:latest(新添加的镜像)
最好的方法是docker commit --help 将会打印出命令行参数和解释,博客的内容各种都有
启动和部署:
● 查看自己所有的镜像 :docker images 将会出现自己的镜像名和ID
● 启动: docker run -it -v /usr/data:/data -p 80:80 restart=always [镜像ID] bash
参数介绍:
● -v 服务器存放mongdb的文件目录:docker容器中存放 的目录,做出相应的映射,将data数据存储在服务器中
● -P 服务器端口的映射