私有DockerHub搭建

docker简介

一个开源的应用容器引擎,能够用来打包程序,能够包入依赖环境,这样只须要提供docker image便可,相似于虚拟机,可是更轻量级。git

几个概念:github

Paas,platform as a service,Caas container as a service。docker

镜像:文件的层次结构以及包含如何运行容器的源数据,相似虚拟机中安装系统的iso文件。json

容器:从镜像建立的运行实例,能够被启动、开始、中止、删除。 相似于安装好的虚拟机系统。浏览器

仓库:存放镜像的仓所,仓库注册服务器上有多个仓库,每一个仓库有多个镜像,每一个镜像有多个tab。和git作类比的话,dockerhub相似github,里面有不少项目,项目相似于镜像,每一个项目有屡次提交,对应镜像的多个tag安全

 

使用目的

1,实现应用隔离,多个应用可能会相互影响,经过使用docker可使相互分离,好比搭建禅道系统会用到lnamp,而其余的一些也会用到,虽然经过配置也能分割【目前现状,可是不够直观,并且conf文件写的比较乱,多是水平差,不过不想花太多精力在这个上面,毕竟配置不是目的】,可是使用docker会更方便整洁,好比本地81端口提供A服务,82端口提供B服务,只须要ngix中配置转发便可。bash

2,方便管理,进行一些实验的时候,老是得记录当前的一些东西,一旦实验失败还须要还原,若是使用docker,只须要根据须要commit备份便可,若是失败了,从新加载以前的image继续。服务器

3,方便迁移,在任意一台电脑上,不管是服务器仍是本地,进行实验测试,完成后发布只须要将对应的image移过去便可,以前则是在本地作一遍,好了再在server上作一遍,虽然说熟能生巧,但是浪费时间,并且没必要要,毕竟根本目的是开发某个功能,不是为了部署和维护。学习

4,体积小。以前有用过虚拟机,利用快照功能备份,可是文件太大了,难以经过U盘移动拷贝,docker image通常几十兆到一两百兆,大的也才一个多G,很轻易能够经过U盘拷贝。测试

5,镜像多,DockerHub上有不少公开image,只须要找到合适的镜像,在上面进行修改便可。

6,占用资源少,若是想要虚拟机流畅运行,至少2G或者4G的内容,16G顶多开四五个虚拟机,而docker能够运行不少个。

局限性

毕竟只是大概的了解了docker,看书中介绍有提到安全性等问题,根据须要决定是否使用,本身目前只是为了作一些实验学习,因此采用。不过以前初次接触docker的时候,为了搭建一个服务,一直没成功,因此直接下了别人的image,结果运行后虽然能实现目的,可是不知道怎么停下来,搜索百度,怎么都停不下来,最终直接删除了文件,因为docker是封装好的,若是既能知足需求,同时悄悄的作一些其余事情,也是很难发现的,不想github同样,直接提供源码,若是有后门就有可能被人发现,因此docker最好下载可信度高的,或者直接本身从头开始搭建。

经常使用docker命令

docker须要管理员权限运行,下面省略sudo

man docker会给出文档说明

docker 或者docker /? 或者docker --help 给出帮助文档

 

为了下载dockerhub的image,首先须要在dockerhub上注册。

docker login   //进行登陆,用户名不带邮箱@以及后面的部分

登陆成后能够在dockerhub上搜索下载

docker search XXX //以XXX为关键字在dockerhub上搜索

docker pull AAA:BBB //AAA是image的名字,BBB是tag,若是不指定,则为latest,即下载最新的image

下载后本地就有了镜像

docker images //查看本地的docker

会列出REPOSITORY  TAG  IMAGEID CREATED SIZE等信息

docker ps // 查看运行中的container

会列出CONTAINERID  IMAGE COMMAND CREATED STATUS PORTS等信息

docker start/stop/restart CONTAINERID   //中止某个container,能够只输入部分,只要可以作出区分便可,好比container少的时候只输入一两位就够了

docker port CONTAINERID //查看该container port映射关系

docker run 【选项】 IMAGE 【command  args】  //从某个镜像启动container,若是本地没有会自动下载

docker commit CONTAINERID  repository:tag //当在docker内作出某些修改后,能够用这个命令建立新的image,相似虚拟机的快照功能

docker exec //进入某个container内,如docker exec -it /bin/bash

docker rmi imageid //删除镜像

 

 

私有dockerhub

之因此搭建私有dockerhub,主要由于是要作的事情都是具体的针对我的的,若是提交到dockerhub上一来浪费公共资源,二来可能不经意间泄露我的信息,并且鉴于前面提到的备份功能,可能会频繁的commit,而私有dockerhub有在本地搭建,能够提升效率。

因为对docker还处于简单使用的阶段,就直接使用了别人作好的image。

使用sudo docker login,登陆

sudo  docker run -d -p 5000:5000 registry,自动下载并启动registry 容器,经过5000端口映射到container内的5000端口

此时能够经过浏览器访问本地的5000端口XXX:5000/v2/

须要参照http://www.javashuo.com/article/p-cxczemjo-md.html修改/etc/docker/daemon.json文件,若是不存在则建立一个:

{ "insecure-registries":["myregistry.example.com:5000"] }

重启

sudo /etc/init.d/docker restart

而后下载镜像,好比jmoger/gitblit

git docker pull jmoger/gitblit

给这个image打上tag,获得一个新的image:

sudo docker tag jmoger/gitblit 192.168.50.186:5000/gitblit    //根据时间状况设置ip

而后就能够提交到本身的私有dockerhub上了

sudo docker push 192.168.50.186:5000/gitblit

能够在docker内进行开发,而后用这种方式同步开发环境。好比作禅道系统的二次开发,在公司内作了一部分,docker提交到本身的dockerhub上,回去后pull下来能够继续作,不管code仍是环境都彻底同样。若是经过git同步code,还须要确保两边有一样的环境,若是经过虚拟机同步,导出导入虚拟机须要很多时间,并且虚拟机须要配置一些东西,安装必要的软件以后未必可以经过U盘携带,并且读写十几G甚至几十G的内容也须要很多时间。

 

参考资料:

1.docker技术入门与实战

2.docker入门白皮书

相关文章
相关标签/搜索