iszjw 发表于 2019-2-21 11:01:19

Docker 私有仓库搭建

  我们在使用Docker时 下载镜像一般都是在外网下载并使用。可是当我们没有外网时我们不得不自己搭建私有仓库。
先看下流程图:
http://i2.运维网.com/images/blog/201806/18/bac77e01a195987691ac1e775121652c.png
  下面我们开始搭建 私有仓库
1、安装docker,并设置为开机自启

yum install docker -y
systemctl start docker
systemctl enable docker
  2、下载registry 镜像并且run起来
下载镜像

# docker pull registry
Using default tag: latest
Trying to pull repository docker.io/library/registry ...
latest: Pulling from docker.io/library/registry
Digest: sha256:672d519d7fd7bbc7a448d17956ebeefe225d5eb27509d8dc5ce67ecb4a0bce54
Status: Downloaded newer image for docker.io/registry:latest
  查看下载的镜像
# docker images
REPOSITORY                                    TAG               IMAGE ID            CREATED             SIZE
docker-repo.example.com:5000/hello-world-v1   latest            e38bc07ac18e      2 months ago      1.85 kB
docker.io/hello-world                         latest            e38bc07ac18e      2 months ago      1.85 kB
registry.erick.com                            5000                e38bc07ac18e      2 months ago      1.85 kB
docker-repo.example.com:5000/registry         v1                  d1fd7d86a825      5 months ago      33.3 MB
docker.io/registry                            latest            d1fd7d86a825      5 months ago      33.3 MB
  通过刚刚下载的镜像Run起来一个容器,并挂载目录
  # docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry ``registry:2    ##把宿主机的5000端口映射给docker 的5000端口。
查看此时刚刚创建的容器


# docker ps
CONTAINER ID      IMAGE               COMMAND                  CREATED             STATUS            PORTS                  NAMES
f22a2d1b8abe      registry:2          "/entrypoint.sh /e..."   2 minutes ago       Up 2 minutes      0.0.0.0:5000->5000/tcp   xenodochial_borg
进入容器我们查看容器的目录
# docker exec -u root -it f22a2d1b8abe sh
![](http://i2.运维网.com/images/blog/201806/18/2a25629d8884af5691f285ff6cc58796.png"=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
查看本地宿主机的 挂载文件系统
2、在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:
{
"insecure-registries": [
"docker.erick.com:5000"
]
}
如果有多个私有仓库,则用“,”隔开,例如:
{
"insecure-registries": [
"docker.erick.com:5000",
"docker.erick.com1:5000"
]
}
重新启动docker 服务
systemctl restart docker
修改/etc/hosts 能够 解析到 docker.erick.com
192.168.1.39    docker.erick.com
3、开始把镜像导入到私有仓库
查看此时存在的docker 镜像
# docker images
REPOSITORY            TAG               IMAGE ID            CREATED             SIZE
docker.io/hello-world   latest            e38bc07ac18e      2 months ago      1.85 kB
docker.io/registry      2                   d1fd7d86a825      5 months ago      33.3 MB
docker.io/registry      latest            d1fd7d86a825      5 months ago      33.3 MB
#
为docker.io/hello-world 镜像更名为docker.erick.com:5000/hello-world
![](http://i2.运维网.com/images/blog/201806/18/5ff1d7963d4d62432f6db979fc49629e.png"=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
把刚刚更改好名字的镜像上传至私有镜像
![](http://i2.运维网.com/images/blog/201806/18/be5a5767abaaf50a4d180807e9d31591.png"=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
可以看到我们已经把镜像上传到了 我们自己搭建的私有镜像仓库。我们看下存放仓库的位置
先查看宿主机:
![](http://i2.运维网.com/images/blog/201806/18/a382096763102f77d1d0503adf1e2120.png"=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
在查看容器:
![](http://i2.运维网.com/images/blog/201806/18/d1cd5691bbe8b25933c4365b24de9239.png"=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
docker容器实际上是挂载到宿主机的一个目录!


页: [1]
查看完整版本: Docker 私有仓库搭建