docker-hub

新建私有镜像仓库,只有registry:2这个镜像运行时,才能push,pull私有镜像库

私有镜像仓库的好处:

1.上传下载速度快

2.企业可自行维护镜像仓库

3.需要维护镜像仓库服务器

4.同步docker官方镜像到企业私有镜像仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
docker pull registry:2
# 使用官方的 registry 镜像来启动本地的私有仓库
# 仓库会被创建在容器下/var/lib/registry下
# 将镜像文件存放在本机的指定路径/data/registry
docker run -d -p 5000:5000 --restart=always --name registry \
-v /data/registry:/var/lib/registry registry:2
# 将镜像运行为容器 -d 将这个进程后台运行 -p 映射端口主机端口:容器端口
# --restart=always当容器服务死掉之后自动重启 --name容器的名字
# -v 映射容器的目录到宿主机下
# -m 128m 内存限制在128M
# 查看主机端口在容器的映射情况
docker port nostalgic_morse 5000
docker pull nginx
#镜像的重命名 标记镜像
docker tag nginx 47.52.94.126:5000/nginx:last
docker tag nginx 192.168.1.116:5000/nginx:last
# modify docker daemon启动参数
vim /usr/lib/systemd/system/docker.service
# centos ubuntu:/lib/systemd/system/docker.service
ExecStart=之前的不要动加上 --insecure-registry=0.0.0.0/0
systemctl daemon-reload
systemctl restart docker
# 看参数有没有正确的添加.
ps aux |grep docker
# 上传标记镜像到私有仓库
docker push 192.168.1.116:5000/nginx:last # 本机测试的成功
docker pull 192.168.1.116:5000/nginx:last
# 只要能连接上私有仓库,就可以从私有仓库中pull
# 因为本机做为私有仓库,已经有这image了,所以下载得很快
# docker push 47.52.94.126:5000/nginx:last 上传public IP失败

镜像上传到Docker Hub

1
2
3
4
5
6
7
8
9
docker login #输入 hub.docker.com注册时的用户名和密码
docker pull registry
docker tag registry femn/registry:last
# 镜像名:femn/registry tag:last
#上传到Docker Hub 镜像名必须是 username/imagesname,才能上传
# 并且不需要提前去Docker Hub创建仓库
docker push femn/registry
# 将本地镜像上传到https://hub.docker.com的个人仓库中了.

Docker Hub

Docker通过docer search、pull、login和push等命令提供了连接Docker Hub服务的功能.

Docker Hub是一个由Docker公司负责维护的公共注册中心,它包含了超过15,000个可用来下载和构建容器的镜像,并且还提供认证、工作组结构、工作流工具(比如webhooks)
构建触发器以及私有工具(比如私有仓库可用于存储你并不想公开分享的镜像)

自动构建

自动构建功能会自动从Github或BitBucket直接将镜像构建或更新至Docker Hub,通过为Github或Bitbucket的仓库添加一个提交的hook来实现,
当你推送提交的时候就会触发构建和更新,但是,你不能通过docker push推送一个自动化构建,而只能通过在Github或者BitBucket提交你的代码来管理它.
你可以在一个Docker的仓库中创建多个自动构建,配置它们只指定的Dockerfile或Git 分支

Automated Builds的一个实例

建Dockerfile的目的,就是为了使用dockerfile里面的from语法的作用,来借用github服务器新建我需要的镜像

由于不能从google container上直接pull镜像,所以这里通过docker hub的Automated Builds功能从项目的dockerfile中Build到docker的官方服务器上,然后再从它们上面拉取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 步骤2中 创建一个带有Dockerfile的Github项目
mkdir docker_lib
cd docker_lib
git init
mkdir google-etcd-amd64
cd google-etcd-amd64
vim Dockerfile
FROM gcr.io/google_containers/etcd:2.0.12
MAINTAINER femn2014
git add .
git commit -m '增加Dockerfile文件,解决镜像被墙的问题'
# 在github 创建一个名为docker_lib的项目
git remote add origin https://github.com/femn2014/docker_lib.git
git push -u origin master
# 当完成此实例的所有步骤之后,再测试下,推送提交的时候就会触发构建和更新
vim Dockerfile
FROM nginx
MAINTAINER femn2014
git add .
git commit -m '当推送提交时触发构建和更新'
git push -u origin master
# 这时 docker pull femn/etcd 时下载的将会是nginx的镜像

总结来说 自动构建的步骤

1.创建一个Docker Hub账户并且登陆
2.通过create选择 create automated build创建一个项目,再选择连接一个包含Dockerfile的GitHub或者BitBucket.
3.给自动构建创建一个名称:etcd(相当于也就是Docker Hub的项目的镜像名称)
4.配置自动化构建 (click here to customize)
5.选择你想用于构建的分支(默认是master分支)
6.指定Dockerfile的路径,默认是/,也可以在github中建立个目录再创建Dockerfile文件,为了方便我们后面区分镜像包
7.指定一个Docker标签来构建

设置头像
国内docker_hub
另一个镜像管理工具Quay

Share Comments