docker私有仓库192.168.254.137
docker客户机192.168.254.128
咱们在使用Docker时 下载镜像通常都是在外网下载并使用。但是当咱们没有外网时咱们不得不本身搭建私有仓库。
流程图:
docker 版本
[root@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: swarmlinux
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: falsenginx
安装docker https://blog.51cto.com/10158955/2125450 下载registry 镜像而且run起来 docker pull registry [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:latestweb
查看下载的镜像
docker images
[root@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.3MBdocker
经过刚刚下载的镜像Run起来一个容器,并挂载目录
[root@docker ~]# docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2 ##把宿主机的5000端口映射给docker 的5000端口。json
查看此时刚刚建立的容器
[root@docker ~]# 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_sahadom
进入容器咱们查看容器的目录
[root@docker ~]# sudo docker exec -it 7c92ce5571d5 sh
/ #
exit 退出容器
而后在”/etc/docker/“目录下,建立”daemon.json“文件。并添加
[root@docker ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["docker.erick.com:5000"]
}tcp
注意书写格式为json格式,有严格的书写要求;
第1行是国内镜像源
第2行是docker私有仓库地址;docker.erick.com(这里用的是域名也能够是IP)就是docker私有仓库的地址,添加后链接docker私有仓库就是用http协议了。ide
修改/etc/hosts 可以 解析到 docker.erick.com
[root@docker ~]# 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修改配置内容都不一样
[root@docker ~]# cat /etc/sysconfig/docker
OPTIONS='--selinux-enabled --insecure-registry 192.168.254.137:5000'
从新启动docker 服务
systemctl restart docker
开始把镜像导入到私有仓库
查看此时存在的docker 镜像
[root@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
把刚刚更改好名字的镜像上传至私有镜像
能够看到咱们已经把镜像上传到了 咱们本身搭建的私有镜像仓库。咱们看下存放仓库的位置
先查看宿主机:ui
页面能够查看仓库中的镜像
http://docker.erick.com:5000/v2/_catalog3d
客户端去使用远程镜像:
首先要修改配置,与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 要么 你要在本地解析一些OK