今年3月,Java 10 如期发布,Java 10 是采用新发布周期的第一个版本,提供了 109 项新特性,其中最备受关注的莫过于局部变量的类型推断。所以这里主要记录一下这个特性的用法。
Java 9 新特性学习
在Java 8 发布3年多后,Java 9 终于在2017年9月21日正式发布。Java 9 提供了超过150项新功能特性,包括备受期待的模块化系统、 可交互的REPL工具jShell、JDK编译工具、Java公共API和私有代码,以及安全增强、扩展提升和性能管理改善等。在学习这些新特性之前,我们得先安装好JDK 9,JDK 9 下载地址:https://www.oracle.com/technetwork/cn/java/javase/downloads/jdk9-downloads-3848520-zhs.html。
Docker Compose
部署一个应用可能需要用到多个Docker容器,比如MySQL,Redis,Nginx等,单独的去管理每个容器可能会比较麻烦。Docker Compose可以通过一个yml文件来统一管理这些容器,可以极大简化我们的应用部署过程。这里以部署WordPress为例,介绍如何使用Docker Compose去统一管理多个Docker容器。
Docker存储
Docker容器在运行的时候会产生数据,为了不让这些数据随着容器的删除而删除,Docker支持数据持久化。Docker数据持久化主要有两种方式:volume和bind mount。使用volume数据将持久化在Docker管理的volume中(保存在/var/lib/docker/volumes目录下),使用bind mount,数据将持久化在我们指定的宿主机的某个目录中。
Docker网络配置
在安装好Docker后,其默认提供了三种网络模式:bridge、host和none。其中bridge是Docker默认的网络模式,在该模式下,容器拥有自己的IP namespace,容器可以通过宿主机上的docker0网桥与别的容器、宿主机或者外部网络进行通信。此外我们还可以通过端口映射的方式让外部环境也能访问到容器内部。
Docker默认的网络模式如下图所示:
学习Dockerfile
在 Docker 镜像与容器 一节中我们通过Dockerfile构建了镜像,这节我们来了解下Dockerfile的语法。Dockerfile包含了诸多关键字,所以要学习Dockerfile的用法,得先从这些关键字入手。
Docker 镜像与容器
开始之前,可以通过 Vagrant构建一个CentOS环境 ,然后根据 官方文档 来安装Dokcer,下面的例子运行在CentOS7环境下。
Docker Image俗称Docker镜像,它是由一系列图层(Layer)构成的,每个图层代表Dockerfile(通过Dockerfile我们可以创建镜像)中的一行指令,镜像是只读的。
那什么是Dockerfile呢,举个简单的Dockerfile示例:
1 | FROM centos |
使用Vagrant创建CentOS虚拟机
Vagrant是一款由HashiCorp公司提供的,用于快速构建虚拟机环境的软件。本节我们将使用Vagrant结合Oracle VM VirtualBox快速地在win10环境下构建CentOS7虚拟机。在此之前需要先安装好 Vagrant 和 VirtualBox。