我们在使用Docker时 下载镜像一般都是在外网下载并使用。可是当我们没有外网时我们不得不自己搭建私有仓库。 先看下流程图:

下面我们开始搭建 私有仓库 1、安装docker,并设置为开机自启

yum install docker -y 
systemctl start docker
systemctl enable docker

2、下载registry 镜像并且run起来 下载镜像

[root@docker ~]# 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

查看下载的镜像 [root@docker ~]# 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起来一个容器,并挂载目录

[root@docker ~]# docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry ``` registry:2 ##把宿主机的5000端口映射给docker 的5000端口。` 查看此时刚刚创建的容器

[root@docker ~]# 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
进入容器我们查看容器的目录
[root@docker ~]# docker exec -u root -it f22a2d1b8abe sh

![](http://i2.51cto.com/images/blog/201806/18/2a25629d8884af5691f285ff6cc58796.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,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 镜像
 [root@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
[root@docker ~]# 
为docker.io/hello-world 镜像更名为docker.erick.com:5000/hello-world
![](http://i2.51cto.com/images/blog/201806/18/5ff1d7963d4d62432f6db979fc49629e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
把刚刚更改好名字的镜像上传至私有镜像
![](http://i2.51cto.com/images/blog/201806/18/be5a5767abaaf50a4d180807e9d31591.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

可以看到我们已经把镜像上传到了 我们自己搭建的私有镜像仓库。我们看下存放仓库的位置
先查看宿主机:
![](http://i2.51cto.com/images/blog/201806/18/a382096763102f77d1d0503adf1e2120.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
在查看容器:
![](http://i2.51cto.com/images/blog/201806/18/d1cd5691bbe8b25933c4365b24de9239.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

docker容器实际上是挂载到宿主机的一个目录!