Docker简介、以及搭建私有仓库的两种方法

Docker是一个可为任何应用创建轻量级的、可移植的、自给自足的容器。开发者本地编译测试通过的容器即可批量的在生产环境中部署。

Docker能处理的事情:
1)隔离应用依赖
2)创建应用镜像并进行复制
3)创建容易分发的即启即用的应用
4)允许实例简单、快速地扩展
5)测试应用并随后销毁它们

Docker的目的是创建软件程序可移植的轻量容器,让其可以在任何安装了Docker的机器上运行。

镜像:类似于虚拟机的快照。
镜像是容器运行时的只读模板,每个镜像由一系列的层(layers)组成,如果修改一个Docker镜像,比如说升级某个程序,一个新的层就会被创建。
创建一个镜像之前,可以先拿一个镜像,对它进行修改来创建它的子镜像。方式有两种:
1)在一个文件中指定一个基础镜像及需要完成的修改;
2)通过“运行”一个镜像,对其进行修改并且提交。

仓库:用于保存镜像,可以理解为代码控制中的控制仓库。

容器:从镜像中创建,等同于从快照中创建虚拟机,应用都是由容器运行的。可以将容器看做一个简易版的linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用环境。

搭建自己的私人docker registry(两个功能:镜像管理、认证):镜像管理主要由docker-registry来实现,通过http服务上传下载;认证可以由现成的方案(如nginx)实现http请求管理;

docker-registry-deploy.png

1)安装docker-registry

docker run -d -p 5000:5000 -v /opt/registry:/tmp/registry registry

指定本地目录/opt/registry为容器存放地址,默认为/tmp/registry
访问http://ip:5000/v2得到返回“{}”即为正确安装
2)将本地镜像pull到私有仓库中

//修改镜像tag
docker tag name ip:5000/name
//上传打了tag的镜像到私服
docker push ip:5000/name

访问http://ip:5000/v2/_catalog会返回{"repositories":["name"]}即为上传成功
3)下载镜像

docker pull ip:5000/name

由于新版的docker-registry需要https协议,所以有两种方法建立私有库
1)修改docker默认配置(debian中位置在/etc/default/docker)
添加

Docker是一个可为任何应用创建轻量级的、可移植的、自给自足的容器。开发者本地编译测试通过的容器即可批量的在生产环境中部署。

Docker能处理的事情:
1)隔离应用依赖
2)创建应用镜像并进行复制
3)创建容易分发的即启即用的应用
4)允许实例简单、快速地扩展
5)测试应用并随后销毁它们

Docker的目的是创建软件程序可移植的轻量容器,让其可以在任何安装了Docker的机器上运行。

镜像:类似于虚拟机的快照。
镜像是容器运行时的只读模板,每个镜像由一系列的层(layers)组成,如果修改一个Docker镜像,比如说升级某个程序,一个新的层就会被创建。
创建一个镜像之前,可以先拿一个镜像,对它进行修改来创建它的子镜像。方式有两种:
1)在一个文件中指定一个基础镜像及需要完成的修改;
2)通过“运行”一个镜像,对其进行修改并且提交。

仓库:用于保存镜像,可以理解为代码控制中的控制仓库。

容器:从镜像中创建,等同于从快照中创建虚拟机,应用都是由容器运行的。可以将容器看做一个简易版的linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用环境。

搭建自己的私人docker registry(两个功能:镜像管理、认证):镜像管理主要由docker-registry来实现,通过http服务上传下载;认证可以由现成的方案(如nginx)实现http请求管理;

docker-registry-deploy.png

1)安装docker-registry

docker run -d -p 5000:5000 -v /opt/registry:/tmp/registry registry

指定本地目录/opt/registry为容器存放地址,默认为/tmp/registry
访问http://ip:5000/v2得到返回“{}”即为正确安装
2)将本地镜像pull到私有仓库中

//修改镜像tag
docker tag name ip:5000/name
//上传打了tag的镜像到私服
docker push ip:5000/name

访问http://ip:5000/v2/_catalog会返回{"repositories":["name"]}即为上传成功
3)下载镜像

docker pull ip:5000/name

由于新版的docker-registry需要https协议,所以有两种方法建立私有库
1)修改docker默认配置(debian中位置在/etc/default/docker)
添加


registry配置.png

如果需要添加多个则以空格隔开:

DOCKER_OPTS="--insecure-registry 121.201.116.112:5000 --insecure-registry 121.201.116.112:5000"

同时在各个服务器上也做一样的修改
2)使用https请求私有库
1、新建registry 2.X的容器

mkdir -p /opt/data/registry/conf
conf内文件.png

.crt文件即为证书,.htpasswd为创建私有仓库用户和密码生成的文件

docker run -d --name docker-registry -v /opt/data/registry:/tmp/registry-dev registry:2.4.1 

将该容器命名为docker-registry,目录为/opt/data/registry

2、生成自签名证书

openssl req -x509 -days 3650 -nodes -newkey rsa:2048 -keyout /opt/data/registry/conf/docker-registry.key -out /opt/data/registry/conf/docker-registry.crt 

注意:生成签名是设置your name的时候需要跟域名一致

3、生成私有仓库的账号密码
先要安装apache2-utils,然后利用其附带的htpasswd生成(debian系统)

apt-get install apache2-utils
htpasswd -c /opt/data/registry/conf/docker-registry.htpasswd infinite

创建一个名为infinite的用户

4、创建一个nginx容器

docker run -d \
-p 443:443 \
--name docker-registry-proxy \
-e REGISTRY_HOST="docker-registry" \
-e REGISTRY_PORT="5000" \
-e SERVER_NAME="your domain name" \
--link docker-registry:docker-registry \
-v /opt/data/registry/conf/docker-registry.htpasswd:/etc/nginx/.htpasswd:ro \
-v /opt/data/registry/conf:/etc/nginx/ssl:ro \
containersol/docker-registry-proxy

SERVER_NAME填写的为hosts中配置的域名

5、将crt文件放入默认位置

mkdir -p /etc/docker/certs.d/your domain name/
cp /opt/data/registry/conf/docker-registry.crt /etc/docker/certs.d/your domain name/ca.crt

注意:自定义证书可能存在不被信任的问题,所以需要以下步骤

cp /opt/data/registry/conf/docker-registry.crt /usr/local/share/ca-certificates
update-ca-certificates
service docker restart

注意:docker重启后,容器是不会重启的,所以要将先前的两个容器手动重启

6、测试登录

docker login your domain name

7、客户端下载镜像
在服务器上传了镜像之后,客户端设置hosts,将证书复制过来(自签名正式也可能不被信任),登录之后即可上传下载。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容