1.Docker溯源

  Docker的前身是名为dotCloud的小公司,主要提供的是基于 PaaS(Platform as a Service,平台及服务)平台为开发者或开发商提供技术服务,并提供的开发工具和技术框架。因为其为初创的公司,又生于IT行业,dotCloud受到了IBM,亚马逊,google等公司的挤压,发展举步维艰。于是,在2013年dotCloud 的创始人,年仅28岁的Solomon Hykes做了一个艰难的决定:将dotCloud的核心引擎开源!然而一旦这个基于 LXC(Linux Container)技术的核心管理引擎开源,dotCloud公司就相当于走上了一条"不归路"。可正是这个孤注一掷的举动,却带来了全球技术人员的热潮,众程序员惊呼:太方便了,太方便了。也正是这个决定,让所有的IT巨头也为之一颤。一个新的公司也随之出世,它就是:Docker。可以说,Docker是一夜成名的!!

2.Docker认识

2.1镜像,容器,仓库

  首先,需要了解一下几个概念:镜像,容器,仓库

镜像(image):Docker 镜像就是一个只读的模板,镜像可以用来创建 Docker 容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。镜像是一种文件结构。Dockerfile中的每条命令都会在文件系统中创建一个新的层次结构,文件系统在这些层次上构建起来,镜像就构建于这些联合的文件系统之上。Docker官方网站专门有一个页面来存储所有可用的镜像,网址是:index.docker.io

容器( Container):容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境,Docker 利用容器来运行应用。

仓库:仓库是集中存放镜像文件的场所,仓库注册服务器(Registry)上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。目前,最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。

2.2Docker定义

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。Docker是一个重新定义了程序开发测试、交付和部署过程的开放平台,Docker则可以称为构建一次,到处运行,这就是Docker提出的"Build once,Run anywhere"

  Docker仓库用来保存我们的images,当我们创建了自己的image之后我们就可以使用push命令将它上传到公有或者私有仓库,这样下次要在另外一台机器上使用这个image时候,只需要从仓库上pull下来就可以了。注意:Docker不是容器,而是管理容器的引擎!

Docker中文手册上解释说:Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

  从这里我们可以看出,Docker并非是容器,而是管理容器的引擎。Docker是为应用打包、部署的平台,而非单纯的虚拟化技术。

3.Docker安装

3.1下载和安装Docker Toolbox

  从Docker官网可以下到Docker Toolbox:https://www.docker.com/products/docker-toolbox,选择windows版本下载。

注意:安装路径千万不要有中文!!!!

image

image

请注意下面一点,对最后一项打上钩:

image

然后,点击Install!

3.2Docker配置

安装完成后,在桌面上会出现两个图标:一个是命令行形式Docker终端,一个是图形界面的Docker操作工具。

image

你可通过Git Bash(CMD)查看docker是否安装成功,输入docker-machine,出现版本等信息,安装能够运行,还会给出一些选项,包括machine安装路劲等: -s, --storage-path "C:\Users\wcc335836929\.docker\machine"    Configures storage path [$MACHINE_STORAGE_PATH]

在使用Docker前,要先创建docker machine,它其实是台虚拟机,不过在使用它的时候,你可能根本察觉不出来它是虚拟的。默认情况下,docker machine的所有文件都会保存在用户的根目录下,一般是在C盘,如果就用默认的位置,C盘的空间会越来越小,所以最好还是换个地方。 点击Git Bash,在起开所有docker应用之前需要先使用这个才能更改成功,修改默认的default machine的路径,不然,默认安装在C盘,会使C盘空间越来越小。

然后,输入 notepad .bash_profile 创建和打开.bash_profile 配置文件

然后,在空白处输入(因为我想将以后的镜像都安装到H盘,此处可以修改你喜欢的盘符):

export MACHINE_STORAGE_PATH='H:\docker'

然后,关闭后,在H盘创建名为docker的文件夹,在其下创建名为cache的文件夹,将安装文件下的boot2docker.iso拷贝到该文件夹:

在Git Bash中输入更改路径命令,此处使用阿里云的加速器,因为在使用docker的时候,会需要从docker的网站下载镜像文件,下载速度可能会很慢。获得阿里云加速,需要登录阿里云开发者平台,然后点击右侧的管理中心(当然你得要有一个账户):

阿里云开发者平台:https://dev.aliyun.com/search.html

复制“1.创建一台安装有……”中的代码,然后修改为如下(根据自己盘符修改):

docker-machine -s "H:\docker" create --engine-registry-mirror=https://vf29u5xi.mirror.aliyuncs.com -d virtualbox default

现在就可以在Git Bash中运行了

虚拟机中出现如下界面:

在Git Bash中运行:

这里面就是一个linux风格的Docker环境,提示的IP:192.168.99.100就是Docker虚拟机的IP了。

这台docker machine创建后就启动了,如果下次我们再打开电脑,想要启动docker machine,可以打开Docker Quickstart Terminal或者Git Bash,然后执行下面的命令:

docker-machine start

来启动docker machine。

3.3利用ssh软件登录(这里用putty)

用户名docker密码tcuser

4.下载镜像

用putty连接、登录后输入docker search

选择一个进行下载(这里用petergrace/opentsdb-docker),docker pull petergrace/opentsdb-docker

使用docker images可以看到已经下载过的镜像

5.启动opentsdb

使用docker run -d -p 4242:4242 --name opentsdb petergrace/opentsdb-docker就可以启动容器(-d表示在后台运行,-p绑定主机端口,--name为容器命名为opentsdb)

使用docker ps可以看到运行的容器(-a可以看到全部,包括已经退出的)

下次可以直接使用docker start opentsdb来启动

使用docker stop opentsdb停止

想要删除使用docker rm opentsdb


输出日志:docker logs -f container2 -f是实时输出

查看容器端口号映射:docker port container 5000:查看容器的5000端口对应本地机器的IP和端口号

进入具体的容器(就像登录linux一样去操作容器):docker exec -it container2 /bin/bash

拷贝war、file到容器里面:docker cp DemoOne.war container2:tomcat/webapps

退出容器:exit

后记:

修改opentsdb默认配置

进入petergrace/opentsdb-docker的容器(需要在容器运行的情况下)(另一种方式具体可见docker中使用redis这篇)后,查看Makefile.am,搜索opentsdb.conf应该是用/build-aux/rpm/opentsdb.conf(vi命令模式下:/opentsdb.conf)


打开


最常用的方式是在/opentsdb下新建opentsdb.conf,这里的配置会覆盖默认配置

可以根据需要加入属性,如扩大http请求content-length:

tsd.http.request.enable_chunked = true
tsd.http.request.max_chunk = 655360



重启opentsdb的docker:docker restart <container_name>


参考资料:

http://blog.csdn.net/jinzhencs/article/details/51397634

http://www.linuxidc.com/Linux/2016-07/133506.htm

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐