序
前一段时间工作中遇到很多实用的干货,特地记下来以备忘和分享。接下来我会定期跟新跟新博客,以此来总结经验。
简介
(docker的介绍将会在下一章安装部署中)
此篇文章主要是记录Docker 如何从0到1,从害怕部署各种服务,到秒部署各种服务。
注:docker 可以给程序员省下大把的时间来码代码而不是关系部署服务去测试。
正文
概念
先要理解以下几个概念,才能从整体上体会docker 的精髓。
docker 可以理解是个软件,安装以后提供很多命令让使用者可以从一个仓库中获取各种镜像文件,创建一个运行镜像的容器,然后服务就运行起来了。
这里我觉得 特别像 maven ,maven 也有一个仓库,涵盖常用的所有包。docker 也有一个 docker hub 涵盖了常用的所有服务:tomcat ,nginx(单机、集群),redis,cas,zookeeper,mysql ,centos等等.就像个虚拟机。
容器:
容器是基于镜像启动起来的。可以理解为一台裸机电脑,要想启动给一个镜像系统。是一个执行环境。
镜像
本质是是由文件系统叠加而成的。完全可以理解为一个系统镜像,它有一个引导文件系统,很像Linux/Unix的引导文件系统。总之可以看成一个虚拟机的拷贝镜像。把他放到容器中就可以运行了,服务就启动起来了,就可以访问了。
hello tomcat
在安装好docker 以后就可以使用命令来构建自己想要的服务了。(安装会在下一章中说明)
第一个服务就简单一点,搭建一个tomcat 服务。
docker pull imageName:tag
从docker hub 仓库中拉取镜像文件,不知道镜像名和tag号怎么办。直接Docker Hub去仓库
往下找你会发现 tag 中有 8 latest 等很多版本,因为 tomcat是一个运行在系统的软件,所以可以分为很多镜像,比如 centos 中ubantu 中等等。
现在就可以直接拉去镜像了 使用命令: docker pull tomcat
注意: 如果直接使用命名 docker pull tomcat
等价于docker pull tomcat:latest 版本号自动补全是latest
当下载完成以后就可以使用 docker images 查看本地的镜像文件有哪些。
docker run -p 8033:8080 -d --name myTomcat tomcat:latest
运行成功使用浏览器访问一下。
注:我在的服务器地址 是192.168.1.75 如果你们测试的话使用你们的IP 地址即可。
docker ps
上面我们已经启动了一个容器,那么如何知道有多少容器被启动了
以上就是一个简单实例。接下来重点来了。
命令解析
docker pull
从docker 仓库中获取docker 镜像。
docker push
用于将镜像推送到仓库中
docker images
查看所有的镜像
docker ps
查看所有运行的镜像
运行容器
docker run -p 本地端口:容器中的端口 --name 容器名 镜像名:tag
例子:docker run -p 8033:8080 -d --name myTomcat tomcat:latest
8080 是容器中tomcat 端口,映射到 本机的 8033
tomcat:latest 是tomcat 镜像
-p 后添加端口 映射
-d 后端运行
--name 命名容器的name
docker build -t iamgeName:tag .
构建镜像
-t 是使用 自定义命名镜像
最后的 .就是 扫描当前文件下的 Dockerfile 文件来构建镜像(也可以使用具体的路径)
Dockerfile 文件
FROM daocloud.io/library/tomcat:8.0-jre8
MAINTAINER wh <1120670656@qq.com>
修改时区
RUN rm -rf /etc/localtime
RUN ln -s /usr/zoneinfo/Asia/Shanghai /etc/localtime
把Dockerfile 当前目录下的 szgd.war包添加 到tomcat 的webapps 下面。
ADD szgd.war /usr/local/tomcat/webapps
容器执行删除容器tomcat webapps 中的ROOT 文件
RUN rm -rf /usr/local/tomcat/webapps/ROOT
ADD ROOT /usr/local/tomcat/webapps/ROOT
注
docker 在拉去镜像的时候是先从本地获取,如果没有从远程获取。
docker 在跟新镜像的时候只跟新跟新的部分,没有跟新的不会动。所以这样效率会很高。
进阶(下一章)
docker-compose.yml 文件
Registry
.sh 一键打包脚本
福利
想要java web 整套学习资源的可以加我的微信。(这里道个歉,之前很多小伙伴加我没有备注,被忽视了。还请备注一下)