docker建立私有仓库的心得以及错误

一:如何创立自己的docker镜像

1:利用编写dockerfile文件进行运行下面就是一个dokcerfiel的例子

这里以安装mysql为例子
FROM ubuntu:14.01 #基础镜像 每个镜像都有一个基础镜像
MAINTAINER zhs [email protected] #镜像拥有者的名字
RUN apt-get update
RUN apt-get install -y nginx
RUN echo “\ndaemon off;” >> /etc/nginx/nginx.conf
RUN chown -R www-data:www-data /var/lib/nginx
*#RUN后面的是执行的一系列shell脚本文件*
VOLUME [“/data”,”/etc/nginx/site-enabled”,”/var/log/nginx”]
*#volume的意思是在创建的镜像生成后的容器中创建容器卷(即数据持久化需要的文件)*
WORKDIR /etc/nginx
*#workdir只需要进入的工作目录 即下面的CMD的执行命令所在的目录*
CMD [“nginx”]
*#CMD值运行命令*
EXPOSE 80
*#EXPOSE 值镜像里面的端口*
EXPOSE 443

将编写的dockerfile文件保存在某个目录中,进入到文件中
然后运行docker build -t hello-nginx .
这里的.是指当前目录中 hello-nginx的就是创建的目录名称

二:将镜像push到私有仓库中
1:首先需要下载一个镜像
执行 docker search registry
执行docker pull registry
这里写图片描述

可以看到已经存在registry的镜像 现在运行改镜像
docker run -d -p 5000:5000 –name hello-registry \tmp/registry:\tmp/registry registry
这里写图片描述

可以在浏览器中执行ip:5000/v2/_catalog查看私有里面的镜像文件
这里以镜像nginx为例子上传到自己的私有仓库
执行docker tag nginx localhost:5000/nginx:1.0 给镜像打标签
docker push localhost:5000/nginx:1.0这里写图片描述
访问ip:5000/v2/_catalog
可以看到这里写图片描述
已经存在私有的仓库里面了
这时候执行docker pull ip:5000/zhs-nginx时从私有地址中拉去镜像,这里我们先删除nginx镜像
docker rmi localhost:5000/zhs-nginx:1.0 必须跟上打上的tag名
这里写图片描述
可以看到此时没有nginx的镜像了
执行docker pull ip:5000/zhs-nginx:1.0命令从私服中拉去镜像文件
但是会报错这里写图片描述
处理方法就是修改docker启动配置文件
这里写图片描述
docker从1.3版本以后对Registry的访问都是用的https。这是基于安全的考虑的。而我的私有仓库容器使用http协议。所以造成了这样的报错。
然后重新启动docker 启动registry容器
重新执行docker pull ip:5000/zhs-nginx:1.0
这里写图片描述
然后重新docker images
可以查看到nginx的镜像已经存在了
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zhs145612zhs/article/details/81284541
今日推荐