安装docker
这里是windows8.1的操作系统,相对与window10、Linux等系统中安装会稍复杂些。
docker是什么
docker是什么,专业的回答在百科上有,我就不复制了。我的理解是,docker是一个工具或者称为服务,它可以管理多个的系统镜像,还有一个称为容器的东东,把镜像取过来放到容器中运行。这里的系统镜像实际上linux系统的简化版,把系统体积压缩到很小。后续根据需求,在这个系统中安装上需要的程序,做成一个新的镜像,可以在新的镜像中安装程序打成新的镜像。这样一层层的镜像打包,保存,就会有很多的镜像。放到仓库里,按需获取安装使用。
spring boot的系列中为什么用到docker呢?spring boot开发完成,打包后是一个.jar文件(还有其它的使用方法,我基本上都是打jar文件,运行这个jar文件启动项目)。本身就可以是一个可执行文件,运行也是很方便的。如果配合docker后,就可以更容易组建微服务。用java为基础镜像做镜像。把一个个服务打包成一个个镜像。测试、发布都可以用同一个镜像去执行,这样使环境统一,也方便发布。再配合其它docker工具,使得多个服务组成的系统更容易维护。
下载docker
windows中安装docker,是下载安装Docker Toolbox。如果是windows10,可以到docker官网下载。这里是windows8.1,下载地址http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/。

安装docker
下载后双击安装,我的系统中已经安装过docker-toolbox,可能安装界面上有些小区别。



其实windows中使用docker,是安装VirtualBox虚拟机,在虚拟机安装一个linux系统,在linux中运行docker服务,windows中的磁盘映射到虚拟机中。实际上docker还是安装在linux中。

创建桌面图标与环境变量

点击“install”开始安装。


注意,安装完成后最好重启下系统。否则可能会因为环境变量没生效使得有些命令无效。
使用

安装完成后,桌面上有三个图标。
查看下环境变量





可以看到,安装包配置了一些环境变量。
现在来看下虚拟机的情况

双击打开VirtualBox

一个没有系统的虚拟机

运行DockerQuickstart

首次运行时间会比较长,需要下载boot2docker.iso。
下载boot2docker.iso完成后,会在虚拟机中安装一个名为default的Linux系统。


启动完成后进入docker界面。从这里可以看到default系统的ip为192.168.99.100
这里留意一点,192.168.99.100这台机子是可以访问本机(virtualBox的宿主机)的局域网的。比如,本机IP为192.168.1.101,局域网中有台机子是192.168.1.102 在102机子中安装一个数据库,101能访问这个数据库,那么192.168.99.100也是可以访问102的数据库的。
这里,windows8.1中的docker已经安装完成了。可以验证一下

SSH远程192.168.99.100
既然default是一台Linux系统机子,那么就应该可以用SSH远程访问。是可以的,我这里用的XShell

添加一个连接,端口号是22 用户名:docker,密码:tcuser

成功连接到default主机。
体验镜像
我们安装一个tomcat镜像试试看。
用search命令看看有没有tomcat镜像

发现有tomcat镜像,用pull命令将tomcat镜像拉取下来。

完成后用docker images命令查看本地镜像

使用tomcat镜像创建容器并运行。
docker run -idt -p 8080:8080 --name tomcat tomcat

查看运行中的容器

查看页面,注意,这里要用192.168.99.100访问,而不是本机地址。

访问到界面,说明tomcat启动成功
由于tomcat运行在容器中,那么页面文件怎么处理呢?这里为了讲文件挂载,所以这里采用本地文件挂载到容器的方法。
首先挂载一个本地文件夹到default虚拟机中的一个目录。
打开VirtualBox管理器,default右键->设置


重启default系统,本地F:\ebertemp\demo文件夹的更改就会反映到虚拟机/Demo目录中
查看运行中的容器
docker ps

如果tomcat容器正在执行(列表中看到容器),先停止容器
docker stop tomcat
删除前面创建的tomcat容器
docker rm tomcat
在F:\ebertemp\demo\tomcat\test中创建一个html文件

内容如下
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>test</TITLE>
<META http-equiv=Content-Type content="text/html">
</HEAD>
<BODY>
<P>test docker</P>
</BODY>
</HTML>
将/Demo/tomcat/test目录挂载到容器/usr/local/tomcat/webapps/test目录中,即将本地F:\ebertemp\demo\tomcat\test目录挂载到容器tomcat界面目录/usr/local/tomcat/webapps/test中。运行如下命令
docker run -idt -p 8080:8080 -v /Demo/tomcat/test:/usr/local/tomcat/webapps/test --name tomcat tomcat
访问test项目,结果是本地文件。

注册国内仓库
拉取docker官方的库有点慢,可以注册一个国内仓库来增加拉取镜像速度。这里以阿里云的加速地址为例
https://brelgdhp.mirror.aliyuncs.com
用SSH连接到default

cd /var/lib/boot2docker
sudo vi profile
修改代码如下
EXTRA_ARGS='
--registry-mirror=https://brelgdhp.mirror.aliyuncs.com #这里是注册国内仓库
--label provider=virtualbox
'
CACERT=/var/lib/boot2docker/ca.pem
DOCKER_HOST='-H tcp://0.0.0.0:2376'
DOCKER_STORAGE=overlay2
DOCKER_TLS=auto
SERVERKEY=/var/lib/boot2docker/server-key.pem
SERVERCERT=/var/lib/boot2docker/server.pem

--insecure-registry docker.biboheart.com 这个后面会讲到
保存后,重启default主机生效。可以到VirtualBox界面重启,也可以用docker-machine重启
docker-machine restart default
执行这个命令的时候,也可以看看VirtualBox变化。

这样就已经完成国内仓库的注册
网友评论