上次说了通过dockerfile来定义镜像,说了关于dockerfile的命令,只说了几个基础的命令,在以后学习中逐渐给各位老铁说下,大家一定要注意构建镜像Dockerfile单独放在一个文件夹下,因为他涉及到上下文的概念。这次说说私有仓库。
目前 Docker 官方维护了一个公共仓库Docker Hub,大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。
这个官方镜像仓库的地址,就类似于github,很多官网指定的仓库都在这里https://hub.docker.com/
免费注册一个 Docker 账号https://hub.docker.com/signup?next=%2F%3Fref%3Dlogin
官网登录 https://id.docker.com/login/
官网搜索
命令行登录
docker login
命令行搜索镜像 返回了很多包含关键字的镜像,其中包括镜像名字、描述、收藏数(表示该镜像的受关注程度)、是否官方创建、是否自动创建。官方的镜像说明是官方项目组创建和维护的,automated资源允许用户验证镜像的来源和内容。
docker search redis
--filter=stars=N 类似github starts次数大于多少的
docker search redis --filter=stars=50
镜像分为两种 1.官方镜像例如:centos,nginx,mysql 2.用户镜像例如:sss/centos,sss/nignx,bbb/mysql (sss用户,bbb用户自己维护的镜像) 命令行的方式退出
docker logout
毕竟dockerhub类似github都是在国外的,国内的小伙伴可能拉取比较慢,搞过java开发的老铁都知道阿里有个国内的maven镜像。其实国内也有类似dockerhub的加速镜像器。阿里云账号也登录后在容器镜像服务。这里演示daocloud 官网:https://www.daocloud.io/
登录后
各种系统的加速方式
一定要跟hub上登录后你的名称保持一致
docker images
docker tag mysql:latest zhugeaming/mysql-test
docker login
docker push zhugeaming/mysql-test
我们总部能每次都把自己的镜像放到官方镜像仓库吧,举个例子,开发java的时候还搞maven私服呢,git也要搞gitlab本地方便上传呢,都上传到官方一方面国内的网速不允许,另一方面公司考虑到自身的保护都是上传到自己的私服上。上传到自己的私服首先网速快,感觉这还是至关重要的。
是官方提供的工具,可以用于构建私有的镜像仓库 官方地址:https://docs.docker.com/registry/
docker run -d -p 5000:5000 --name registry registry:2.7.1
因为 Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制。
/etc/docker/daemon.json
修改内容,192.168.66.100 是仓库的IP地址
{"registry-mirrors":
["http://b81aace9.m.daocloud.io"],
"insecure-registries": [
"192.168.66.100:5000"
]
}
修改完毕后
service docker restart
#重启容器registry
docker container start registry
docker pull hello-world
docker tag hello-world:latest 192.168.66.100:5000/hello-world:latest
docker push 192.168.66.100:5000/hello-world:latest
打开浏览器:http://IP:5000/v2/_catalog
先删除原有镜像,然后在拉取 docker pull 仓库ID:5000/仓库名称:版本号
docker images
docker rmi 192.168.66.100:5000/hello-world
docker rmi hello-world
docker pull 192.168.66.100:5000/hello-world
docker images
PS:建议在拉取镜像的时候不要使用lastest,docker默认最后一个版本都是lastest,最好使用确定的版本方便使用些。这里肯定有老铁问,这个仓库没界面很不爽啊,其实有个harbor的可视化界面仓库,因为harbor牵扯到一些设置,以后会单独说。下次说下docker数据持久化。