Docker学习笔记

  • 基本概念

    Docker: 开源的容器虚拟化平台,虚拟机能作的Docker都能作,并且速度更快。html

    Docker的核心思想有三点:java

    1. 集装箱,将一个个程序(应用)看做集装箱,在网络间进行搬运,Docker中的集装箱也就是镜像
    2. 标准化,将程序所需的环境进行标准化
    3. 隔离,集装箱直接互相隔离

    在对Docker有一个大概的认识后再来看Docker的内部:mysql

      Docker 镜像 - Docker imageslinux

      Docker 仓库 - Docker registeriesweb

      Docker 容器 - Docker containerssql

    镜像就是一系列的文件,每一层的镜像都是只读的,仓库是用来保存镜像的,容器的本质是进程,镜像能够理解为容器的文件系统,一个Docker容包含了全部的某个应用运行所须要的环境。每个 Docker 容器都是从 Docker 镜像建立的。docker

  • 基本操做

    安装过程见官网,安装完成后键入命令,docker version,可获取以下内容:数据库

    

    安装完成后,对docker的镜像进行下载,也就是docker pull image 命令,最后的image是由docker官网提供的镜像名称,由于国情的缘由,国内下载 Docker HUB 官方的相关镜像比较慢,我在ubuntu16系统下,镜像没法从官网直接pull ,能够经过daocloud.io得到本身的加速器。具体操做以下:ubuntu

    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://990a497a.m.daocloud.io  tomcat

    配置Docker Hub Mirror

    sudo echo "DOCKER_OPTS=\"$DOCKER_OPTS --registry-mirror=http://xxx.m.daocloud.io\"" >> /etc/default/docker service docker restart 

    将xxx替换为在 DaoCloud 上注册后,专属生成的Mirror地址连接名。 该脚本能够将 --registry-mirror 加入到Docker配置文件 /etc/defaults/docker中。  

    Docker Hub Mirror使用不须要任何附件操做,就像这样下载官方Ubuntu镜像

    docker pull ubuntu 

    最终问题解决。

    而后就能够开始练习docker的一些基本操做了,一些基本的操做能够参考这篇博客http://blog.csdn.net/zjin_hua/article/details/52041757。

    本身制做完成的镜像能够上传至私有仓库,在这里我使用了阿里云的私有仓库,按照阿里云的提示步骤将本地镜像上传至私有仓库。

    镜像上传成功后结果以下:

    

    

  • web应用容器化

    对docker仓库,镜像,容器等有了基础的认识后,开始在docker中运行本身的web项目,如下实例中的web项目来自于我本身开发的基于SSH框架的java web项目。

  • 首先安装tomcat镜像
  • 编辑Dockerfile文件,具体内容以下

    from tomcat                #第一条指令必须是FROM,其后能够是各类镜像的操做指令

    MAINTAINER 全部者名字 邮箱         #指定镜像全部者

    ADD classnet.war /usr/local/tomcat/webapps/    #将web项目添加至tomcat工做目录下,classnet.war是项目的名称,须要和dockerfile在同一个目录下
    CMD ["catalina.sh", "run"]          #在容器启动时启动tomcat服务器

  • 输入指令 docker build -t name:tag .     #为web的镜像命名,指定版本号,并在最后说明dockerfile的存放位置
  •  在docker中安装mysql的镜像
  • 分别将mysql和web的镜像启动为容器,并指定端口号,另外须要在mysql启动时,经过-e指令配置环境变量,具体环境变量的值能够查看镜像的官方说明,指定数据库的链接密码和数据库名称,与web项目中保持一致。
  • docker ps命令查看容器是否正常启动

 

  • 输入localhost:端口号/classnet/index.jsp 正常访问网站           #另在web项目中须将mysql的链接地址改成虚拟机的ip地址,若使用localhost则不能正常访问

  

  详细操做可参考这篇博文https://yq.aliyun.com/articles/6894,其中涉及到maven的安装,在配置maven项目时出现 [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?经查证后发现是jdk版本的问题Linux系统中自带jdk,版本为open版,更新为oracle版后解决问题。可参考https://zhidao.baidu.com/question/332067219210122805.html替换jdk版本。

  另外补充关于学习时常和资料的问题,了解官网内容加基础概念学习用了两天时间,在docker安装时,由于我的没有linux的基础,又另外学习linux相关内容,花费大约三天时间,在以后练习镜像与容器相关操做以及web容器化用了三天时间。参考书籍有docker从入门到实践

相关文章
相关标签/搜索