docker简介

一个开源的应用容器引擎,可以用来打包程序,可以包入依赖环境,这样只需要提供docker image即可,类似于虚拟机,但是更轻量级。

几个概念:

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

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

容器:从镜像创建的运行实例,可以被启动、开始、停止、删除。 类似于安装好的虚拟机系统。

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

使用目的

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

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/

需要参照https://blog.csdn.net/jiaolongdy/article/details/75389167修改/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入门白皮书

私有DockerHub搭建的更多相关文章

  1. 简单的私有DockerHub搭建

    Docker Hub 目前Docker官方维护了一个公共仓库https://hub.docker.com, 其中已经包括100000+个的镜像.大部分需求都可以通过在 Docker hub中直接下载镜 ...

  2. 如何使用vs将asp.net core项目添加容器支持并发布docker镜像到私有dockerhub和添加k8s/helm管理

    这篇文章介绍一下,如何使用VS2017给asp.net core添加容器支持,并发布镜像到私有docker hub,然后用chart管理容器镜像的操作流程. 话不多说,just do it. 新建项目 ...

  3. linux私有ftp搭建与创建新用户

    一.私有ftp搭建 以后补充 1. 搭建 2.修改配置文件 二.创建新用户 在linux搭建好私有ftp后,默认存放目录是 /var/ftp/ 我们有时候需要给外部公司之类的用,但又不想让他们直接在  ...

  4. ubuntu npm 私有库搭建 (npmjs.org 官方版本)

    目标 npm.xxx.com 安装和推送nodejs包 npmui.xxx.com 管理已经推送的nodejs包   安装 couchdb   https://launchpad.net/~couch ...

  5. Nuget私有服务搭建实战

    最近更新了Nuget私有服务器的版本,之前是2.8.5,现在是2.11.3. Nuget服务器的搭建,这里有篇很详细的文章,跟着弄就好了: https://docs.microsoft.com/en- ...

  6. docker 搭建以太坊私有链搭建

    最近区块链,火得不行,身边也有朋友准备玩这个,说是搭了一个星期,没有把环境搭建起来,叫我帮忙看看环境怎么搭建 于是我找到了官方的地址 https://github.com/ethereum/go-et ...

  7. Openssl与私有CA搭建

    转自:http://www.tuicool.com/articles/aURnim 随着网络技术的发展.internet的全球化,信息共享程度被进一步提高,各种基于互联网的应用如电子政务.电子商务日益 ...

  8. 私有云搭建:树莓派+kodexplorer可道云,几步搞定!

    目前蒲公英异地组网则是推出了树莓派1.0软件客户端.无需公网IP!简单60秒设置!轻松远程访问树莓派!实现远程登录.远程配置.远程访问服务.传输数据等等操作.例如:蒲公英树莓派1.0软件客户端+可道云 ...

  9. maven私有库搭建

    一.在企业中基本上都会有自己的maven私有库,主要的目的就是方便依赖包的下载.如果采用远程的方式来实现的话,很多时候会考虑网速问题.如果自己活着公司搭建的私有库,这一样在使用上面会效率更高. 二.私 ...

随机推荐

  1. MyEclipse 2016CI破解版for Mac

    网上的教程很多,一开始怎么都不行,就是不行,也是如此操作,可能是注册机失效了还是怎样,数个小时过去了,我综合了网上的资源,终于OK啦!(我会在文后给出jar 包,注册机的破解文件,以及MyEclips ...

  2. spingmvc实现在程序启动时调用数据库数据

    直接上代码: package com.java.zxf.servlet; import java.text.ParseException; import java.text.SimpleDateFor ...

  3. 基于Vue的省市区三级联动插件

    官网地址:https://distpicker.uine.org/ 安装: npm install v-distpicker --save 局部注册: import VDistpicker from ...

  4. 10.使用子查询 ---SQL

    利用子查询进行过滤 普通查询: SELECT order_num FROM OrderItems WHERE prod_id = 'RGAN01'; 输出▼ order_num ----------- ...

  5. 74cms漏洞分析

    很早以前的一个洞,看到很有意思就拿来看看 这是雨曾经审过的一个洞,因为读取方式很特别复现了一下 upload\plus\weixin.php public function responseMsg() ...

  6. Linux .Net Core

    Linux .Net Core自宿主应用程序瘦身记 一,.NET Core 自宿主应用程序个头有点大 发布.NET Core应用程序有两个方式,一种是“便携式”,一种是“自宿主式”.便携式发布时,目标 ...

  7. D - Simple String CSU - 1550

    http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1550 很久都没补这题,最近想学网络流,就看看,队友以前用网络流过的,Orz, 但是这题只需要简 ...

  8. java.lang.UnsupportedOperationException: setXIncludeAware is not supported on this JAXP implementation or earlier: class gnu.xml.dom.JAXPFactory的解决办法(图文详解)

    不多说,直接上干货! 问题详情 java.lang.UnsupportedOperationException: setXIncludeAware is not supported on this J ...

  9. 在Eclipse下搭建Hadoop开发环境

    在前面的博文中博主展示了如何在虚拟机中搭建Hadoop的单节点伪分布集群,今天给大家介绍一下如何在Eclipse环境中搭建Hadoop的管理和开发环境,话不多说,下面我们就进入正题吧! 1.JDK安装 ...

  10. LCD1602显示中文汉字

    小子在西藏 2011-11-25编写 特别说明笔者是上面的作者,感谢那些原意分享知识的人.时隔5年我又看到了笔者当年写的东西,我想这期间还有许许多多的人 今天写在博客上,愿更多后来者可以学习. LCD ...