Docker学习笔记

Posted gentleman_c

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker学习笔记相关的知识,希望对你有一定的参考价值。

  • 基本概念

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

    Docker的核心思想有三点:

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

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

      Docker 镜像 - Docker images

      Docker 仓库 - Docker registeries

      Docker 容器 - Docker containers

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

  • 基本操作

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

    

    安装完成后,对docker的镜像进行下载,也就是docker pull image 命令,最后的image是由docker官网提供的镜像名称,因为国情的原因,国内下载 Docker HUB 官方的相关镜像比较慢,我在ubuntu16系统下,镜像无法从官网直接pull ,可以通过daocloud.io获得自己的加速器。具体操作如下:

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

    配置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从入门到实践

 

 

 

  

  

以上是关于Docker学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

docker学习笔记- 仓库

Docker学习笔记 — 开启Docker远程访问

Docker学习笔记 — docker仓库的镜像怎么删除

docker学习笔记2:容器操作

docker学习笔记7:发布镜像到docker hub上

Docker学习笔记