网上有很多了,但根据实际情况的不同,会有很多问题,经过一个星期的摸索,终于在我的实验环境下成功了,下面详细记录过程。
实验环境:
实体机:windows 8
虚拟机:VM10
虚拟环境:Ubuntu15.04+Debian8.2 (查看系统版本用lsb_release -a 查看内核版本用uname -a)
系统安装:ubuntu下安装
安装docker
$ wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker;
$ echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrc
安装运行docker-registry
sudo docker run -d -p 5000:5000 registry //首次会从hub docker下载
Debian下安装
先添加源
在/etc/apt/sources.list中添加
deb http://get.docker.io/ubuntu docker main
deb-src http://get.docker.io/ubuntu docker main
然后运行
apt-get update
apt-get install lxc-docker
概念理解:如果本地没有拉取过docker-registry,则首次运行会pull registry。我们的Docker客户端和服务器端的连接配置成http的,如果要安全考虑,需要https连接,需要安装ssl和生成证书,这里就不用。
详细步骤
1、在hub docker里搜索需要的images,eg
docker search elasticsearch
2、pull想要的images
docker pull elasticsearch
3、查看本地有的images
docker images
4、为了不适用ssl,给配置文件加参数
nano /etc/default/docker
DOCKER_OPTS="--insecure-registry localhost:5000"
用service docker restart重启后
用ps aux |grep docker查看这条参数有没有加上
5、如果没有运行regsitry,运行
docker run -d -p 5000:5000 --restart:always --name registry [imageID]
如果报错容器已经使用,则先删除registry容器
docker rm registry (可能要强制删除加 -f)
6、push到registry之前先要tag
例如:要将elasticsearch push到registry
docker tag elasticsearch localhost:5000/elasticsearch
docker push localhost:5000/elasticsearch
7、进入regsitry容器查看是否push成功
第一种: docker-enter <container> ls /tmp/registry/images
第二种:curl http://localhost:5000/v1/search
还有很多方法。
8、配置Debian
同样在 \etc\default\docker文件里添加参数
但问题来了,当用service docker restart重启服务,并用ps查看进程时,发现参数并没有加上,所以在debian上pull的时候缺省是用https,用systemctl status docker
查看,发现启动文件有个是/lib/system/system/docker.service,在这个文件里修改
ExeCStart=/usr/bin/docker -d -H fd:// --insecure-registry ubuntu:5000
用systemctl restart docker就好了
9、在Debain上pull
docker pull ubuntu:5000/elasticsearch
成功!
CoreOS环境下通过register镜像搭建私有仓库:http://www.linuxdiyf.com/linux/12488.html
搭建自己的Docker私有仓库服务:http://www.linuxdiyf.com/linux/2332.html
局域网部署Docker-从无到有创建自己的Docker私有仓库:http://www.linuxdiyf.com/linux/2331.html