luoson1 发表于 2019-2-21 09:33:48

Docker 18.03私有仓库搭建

  docker私有仓库192.168.254.137
docker客户机192.168.254.128
我们在使用Docker时 下载镜像一般都是在外网下载并使用。可是当我们没有外网时我们不得不自己搭建私有仓库。
流程图:
http://i2.运维网.com/images/blog/201807/30/353d36e16ca86ba286802083186303d7.png
docker 版本
# docker version
Client:
Version:      18.03.1-ce
API version:1.37
Go version:   go1.9.5
Git commit:   9ee9f40
Built:      Thu Apr 26 07:20:16 2018
OS/Arch:      linux/amd64
Experimental: false
Orchestrator: swarm
  Server:
Engine:
Version:      18.03.1-ce
API version:1.37 (minimum version 1.12)
Go version:   go1.9.5
Git commit:   9ee9f40
Built:      Thu Apr 26 07:23:58 2018
OS/Arch:      linux/amd64
Experimental: false

安装docker
http://blog.运维网.com/10158955/2125450
下载registry 镜像并且run起来
docker pull registry
# 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
# docker images
REPOSITORY                        TAG               IMAGE ID            CREATED             SIZE
docker.erick.com:5000/hello-world   latest            b2b03e9146e1      3 weeks ago         33.3MB
registry                            2                   b2b03e9146e1      3 weeks ago         33.3MB
registry                            latest            b2b03e9146e1      3 weeks ago         33.3MB
  通过刚刚下载的镜像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
7c92ce5571d5      registry:2          "/entrypoint.sh /etc…"   15 minutes ago      Up 15 minutes       0.0.0.0:5000->5000/tcp   relaxed_saha
  进入容器我们查看容器的目录
# sudo docker exec -it 7c92ce5571d5 sh
/ #
http://i2.运维网.com/images/blog/201807/30/08961cd4adcedadaf6434185e54a0d59.png
exit 退出容器
然后在”/etc/docker/“目录下,创建”daemon.json“文件。并添加
# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["docker.erick.com:5000"]
}
  注意书写格式为json格式,有严格的书写要求;
第1行是国内镜像源
第2行是docker私有仓库地址;docker.erick.com(这里用的是域名也可以是IP)就是docker私有仓库的地址,添加后连接docker私有仓库就是用http协议了。
  修改/etc/hosts 能够 解析到 docker.erick.com
# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.254.137 docker.erick.com
注意:每个版本的docker修改配置内容都不同
# cat /etc/sysconfig/docker
OPTIONS='--selinux-enabled --insecure-registry 192.168.254.137:5000'
重新启动docker 服务
systemctl restart docker
开始把镜像导入到私有仓库
查看此时存在的docker 镜像
# docker images
REPOSITORY                        TAG               IMAGE ID            CREATED             SIZE
docker.erick.com:5000/hello-world   latest            b2b03e9146e1      3 weeks ago         33.3MB
registry                            2                   b2b03e9146e1      3 weeks ago         33.3MB
registry                            latest            b2b03e9146e1      3 weeks ago         33.3MB
注意:为docker.io/hello-world 镜像更名为docker.erick.com:5000/hello-world
http://i2.运维网.com/images/blog/201807/30/428b85745cb0e838eb09a3a55c9da7c2.png
把刚刚更改好名字的镜像上传至私有镜像
http://i2.运维网.com/images/blog/201807/30/fb8411c6df3334e3272497f28665f70c.png
http://i2.运维网.com/images/blog/201807/30/0f71dcd3172abc7c5a45767ead090f6a.png
可以看到我们已经把镜像上传到了 我们自己搭建的私有镜像仓库。我们看下存放仓库的位置
先查看宿主机:
http://i2.运维网.com/images/blog/201807/30/8ce12af919d013e43a9113765acbac26.png
  页面可以查看仓库中的镜像
http://docker.erick.com:5000/v2/_catalog
http://i2.运维网.com/images/blog/201807/30/145086b5b72b6a843ebba0aaa986c005.png
  客户端去使用远程镜像:
首先要修改配置,与137主机一样的配置
scp /etc/docker/daemon.json root@192.168.254.128:/etc/docker
重启服务
systemctl restart docker
远程到私有仓库拉取镜像
docker pull docker.erick.com:5000/nginx-web
docker: Error response from daemon: Get http://docker.erick.com:5000/v2/: dial tcp: lookup docker.er
这个报错是因为域名解析问题 ,要么你就用IP 要么 你要在本地解析一些
http://i2.运维网.com/images/blog/201807/30/d72bc81e9c01baf5c792af73703bef59.png
http://i2.运维网.com/images/blog/201807/30/18c259ce0591509ae3b89282e2cfbcf1.png
OK



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