1.如何建立私有的 Docker Hub

docker是一个非常好用的虚拟化工具。

Registry 在git上分为老代码库和新代码库,老代码push,pull 存在性能问题,新代码库采用go语言编写大大优化了push和pull的效率。

下面给出建立私有docker hub的方法。docker将私有hub的环境打包在registry image中

tag 为latest的版本为 0.9.1 版本,这里直接采用2.1.1版本
执行指令:

$ sudo docker pull registry:2.1.

启动容器:

$ sudo docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2.1.

Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。

这条指令启动一个基于registry image的cotainer。并将host主机的port 5000绑定到虚拟机的端口5000。

通过docker ps 查看

[root@hadoop /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6e6f720c3fbc registry:2.1. "/bin/registry /et..." seconds ago Up seconds 0.0.0.0:->/tcp registry
711859caf110 ubuntu "/bin/bash" hours ago Up hours newcontent
b206b1748020 mysql:5.5 "docker-entrypoint..." hours ago Up hours /tcp mysqldb
abdf172d98e0 test/centos "./var/tmp/tomcat/..." hours ago Up hours 0.0.0.0:->/tcp testContainer
[root@hadoop /]#

可通过浏览器查看:

aaarticlea/png;base64,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" alt="" />

这样,对该host主机端口5000的任何访问都转移到虚拟机中。
上传image:
首先通过docker tag 将image标志为要推送到私有仓库:

docker tag $ID $IP:$port/$name

[root@hadoop /]# docker tag hello-world 127.0.0.1:5000/hello-world

查看镜像:

[root@hadoop /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test/centos latest 0235ea6a1dc1 hours ago MB
<none> <none> f07e6d9bd519 hours ago MB
mysql 5.5 0697aa95507c days ago MB
ubuntu latest 0ef2e08ed3fa days ago MB
ubuntu 14.04 7c09e61e9035 days ago MB
docker-whale latest 17104b3a899f days ago MB
127.0.0.1:/hello-world latest 48b5124b2768 weeks ago 1.84 kB
hello-world latest 48b5124b2768 weeks ago 1.84 kB
centos latest 67591570dd29 months ago MB
registry 2.1. 52bb991b482e months ago MB
[root@hadoop /]#

直接使用doker push 将镜像上传到私有库

[root@hadoop /]# docker push 127.0.0.1:/hello-world
The push refers to a repository [127.0.0.1:/hello-world]
98c944e98de8: Pushed
latest: digest: sha256:720abce70775606fa539d38acc4d58d96eea22d51d7d06d269f6c5d6702e50a5 size:
[root@hadoop /]#

在浏览器中输入 http://127.0.0.1:5000/v2/_catalog可以查看已经上传的镜像

aaarticlea/png;base64,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" alt="" />

同时可在宿主机本地/opt/registry目录下查看到,这样在Container挂掉的时候,我们在宿主机依旧可以查看到镜像

[root@hadoop ~]# cd /opt/registry/
[root@hadoop registry]# ls
docker

下载image:

先将本地的 hello-world 镜像删除掉

[root@hadoop registry]# docker rmi hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
[root@hadoop registry]#

使用 docker pull 拉取镜像

[root@hadoop registry]# docker pull 127.0.0.1:/hello-world
Using default tag: latest
latest: Pulling from hello-world
983bfa07a342: Pull complete
Digest: sha256:720abce70775606fa539d38acc4d58d96eea22d51d7d06d269f6c5d6702e50a5
Status: Downloaded newer image for 127.0.0.1:/hello-world:latest

使用私有仓库push可能会出现的问题:因为启动的registry服务不是安全可信的,需要修改docker配置文件 /etc/default/docker

添加  DOCKER_OPTS="--insecure-registry xxx.xxx.xxx.xxx:5000" 并重启docker 服务 service docker restart

2.将git上的项目git到本地,这里使用的osgit (http://git.oschina.net)

[root@bogon ~]# git clone https://git.oschina.net/wq3435/second.git

若提示

bash: git: command not found...

说明没有安装 git

安装git,CentOS下使用:

yum install git -y

yum install -y git

在Ubuntu 或 Debian下使用

apt-get install git -y

3.在git到本地后会有如下的目录

[root@bogon second]# ls
README.md centos7 docker-compose.yml hello jdk jenkins jre maven mysql tomcat

第一个文件 docker-compose.xml

mysql:                        #先启动一个叫mysql的docker容器(也可以任务是创建名叫mysql的docker容器),命名叫 mysql:,因为是yml文件对格式缩进要求非常严格
image: mysql:5.5 #采用的镜像是 csphere/mysql:5.5
ports: #给宿主机和container的端口进行映射
- "3306:3306"
volumes:        #把宿主机的文件目录/var/lib/docker/vfs/dir/dataxc 映射到container的文件目录 /var/lib/mysql
- /var/lib/docker/vfs/dir/dataxc:/var/lib/mysql #这样的做法是当Container删掉以后,这个目录下的文件还是存在的(可以应用到生产中registry的映射)
hostname: mydb.server.com #这里的hostname和docker run --name 的name是不一样的,后者是 docker ps 中显示的name,而这里的hostname是系统本地
                  #在/etc/hostname 中的hostname是一个意思
tomcat:
image: tomcat:7.0.
ports:
- "8080:8080"
links: #links的两个作用 ①在tomcat中想访问mysql,可以再etc/host下写上ip地址和主机名,这样就可以直接连通了,不需要做域名解析.②可以直接访问msyql容器中的环境变量            
- mysql:db #给mysql起的一个别名db
environment: #配置环境变量,也可以通过 docker run -e 环境变量 配置环境变量
- TOMCAT_USER=admin
- TOMCAT_PASS=admin
hostname: tomcat.server.com

4.使用docker-compose.xml 启动

[root@bogon second]# docker-compose up -d
bash: docker-compose: command not found...

这里显示没有安装docker-compose

安装docker-compose

一种方式:

$ curl -L "https://github.com/docker/compose/releases/download/1.11.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

上述方式可能会很慢。

第二种方式

1、首先检查Linux有没有安装Python-pip包,直接执行 yum install python-pip

yum install python-pip

2、没有python-pip包就执行命令 yum -y install epel-release

yum -y install epel-release

3、执行成功之后,再次执行yum install python-pip

yum install python-pip

4.安装好pip之后,就可以安装Docker-Compose了.在linunx终端执行:pip install docker-compose.

[root@bogon ~]# pip install docker-compose

5.安装成功

[root@bogon ~]# docker-compose --version
docker-compose version 1.11., build dfed245
[root@bogon ~]#

安装好docker-compose后再次执行 docker-compose up -d

[root@bogon second]# docker-compose up -d
Creating second_mysql_1
Creating second_tomcat_1

Docker registry 与 持续集成的更多相关文章

  1. Docker 从入门到放弃(四)Docker+Jenkins_自动化持续集成

    Windows 查看密码 $ cat /var/jenkins_home/secrets/initialAdminPassword 14e14c414f41481aa5955753d3f31f9f 自 ...

  2. Docker与CI持续集成/CD

    背景        Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制 ...

  3. Docker与CI持续集成/CD(转)

    背景 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会 ...

  4. docker+jenkins实现持续集成

    持续集成的概念我就不多说了,网上一大堆,今日主要讲讲怎么通过docker 和jenkins实现项目的持续集成.看着简单,网上完整教程很少,本人摸索很久才搞定!!! 一.首先安装docker.安装过程可 ...

  5. .NET Core部署到linux(CentOS)最全解决方案,入魔篇(使用Docker+Jenkins实现持续集成、自动化部署)

    通过前面三篇: .NET Core部署到linux(CentOS)最全解决方案,常规篇 .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) .N ...

  6. 构建Docker+Jenkins持续集成环境

    docker和Jenkins不是什么新东西了,两者结合也不是什么稀奇的事情,也已经有很多Jenkins和docker相结合的文章,此文仅为自己的一点心得实践,如有不对的地方,欢迎大家纠正. 先贴上大致 ...

  7. Docker+Jenkins_自动化持续集成环境搭建

    前一篇文章里已经在内网环境搭建好docker 详见:https://www.cnblogs.com/befer/p/9107503.html, 现在接着搭建一个Docker+Jenkins的集成环境 ...

  8. ASP.NET Core + Docker +Jenkins 实现持续集成

    1.新建一个ASP.NET Core MVC应用程序: 2.将其上传到git: 3.建立Jenkins任务 (1)选择"新建任务",输入任务名称,选择"自由风格项目&qu ...

  9. docker+jenkins 部署持续集成环境

    1.使用docker container的方式安装jenkins [root@hadoop default]# docker pull jenkin 创建一个目录用于后边映射 [root@hadoop ...

随机推荐

  1. jelly

    http://pwnny.cn/original/2016/06/26/MakeBlog.html#NativeBuild01 Jekyll和Github搭建个人静态博客

  2. 31 整数中1出现的次数(从1到n整数中1出现的次数)

    题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了. ...

  3. Linux用户和用户组管理 用户管理相关命令

    用户添加命令 useradd 注意: 新添加的用户如果不设定密码是不能够登录系统的 命令格式: [root@localhost ~]#useradd [选项] 用户名 选项说明: 选项 选项说明 -u ...

  4. perspective 能玩点什么

    今天看又在看张鑫旭的博客,本来是在玩 transform:Matrix() 的,有讲到单个变化的矩阵设置,但多个变化的就不是那么回事了. 不过这都不是事啦,人生嘛,显然总会有些难关不是轻易能过去的,反 ...

  5. awk的控制语句

    本章主要讲actions中的控制语句,和C语言的控制语句类似. 1.选择语句 if (condition) then-body else else-body 2.循环语句之while: while ( ...

  6. React-Native Listview组件用法详解

    ListView作为React Native的核心组件,用于高效地显示一个可以垂直滚动的变化的数据列表.其中最重要的属性之一是DataSource,列表依赖的数据源,用于实例化一个ListView对象 ...

  7. Kubernetes 部署Weave Scope监控

    yaml下载地址: https://cloud.weave.works/k8s/scope.yaml?k8s-version=? 目前有以下几个版本: ["v1.4"," ...

  8. Elasticsearch-->Get Started-->Basic concepts

    https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-concepts.html There ...

  9. HTML文本/文字竖直方向/纵向显示

    HTML vertical text (Safari, Firefox, Chrome, and Opera) .vText { -moz-transform: rotate(-90deg) tran ...

  10. java 反射机制复习笔记。

    1.java 反射的作用(好处): (1)能够使我们很方便的创建灵活的代码,这些代码可以在运行时装配(运行时获取一个类实例),就不用在组件之间进行源代码链接了,大大提高系统的灵活性和扩展性. (2)与 ...