网站首页 > 博客文章 正文
Docker仓库就是用来存储镜像的地方,我们可以将镜像上传至仓库,也可以从仓库下载镜像。Docker提供一个注册服务器(Registry)用来管理仓库的服务器,一个服务器上可以存在多个仓库,每个仓库下也可以存放多个具备不同tag的镜像。Docker官方维护了一个公共仓库:https:/hub.docker.com,这里提供了可以满足大部分需求的镜像,用户无需登录即可通过docker search命令来查找镜像并利用docker pull命令来将它下载到本地。我们也可以在 https://hub.docker.com/ 注册一个 Docker 账号免费使用docker仓库,通过docker push命令来将自己的镜像推送到 Docker Hub(操作跟git相似,很容易上手)。
Docker Hub
docker仓库分为公共仓库和私有仓库,公共仓库顾名思义就是一个开放的服务,允许用户通过注册服务进行免费上传、下载公开的镜像。目前Docker官方维护了一个公共仓库 Docker Hub,我们可以通过 https://hub.docker.com 免费注册一个 Docker 账号。这个仓库跟Github等代码托管平台很相似,仓库操作也跟Git很相似(很容易上手)。私有仓库则是不公开的仓库,只有被授权的成员才能访问或者下载该仓库的资源。在本地搭建的一个类似公共仓库,搭建好之后就可以将镜像提交到私有仓库中。这样我们既能使用Docker来运行我们的项目镜像,也可以避免资源被泄露。
配置docker镜像加速器
除了Docker官方提供了 Docker Hub的镜像服务,国内一些云服务商也提供类似于 Docker Hub 的公开服务。如阿里云、腾讯云、网易云、DaoCloul、时速云等镜像服务,这些镜像服务被称为加速器。我们可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器。登录阿里云获取专属的镜像加速器地址,daemon.json文件一般再在/etc/docker目录下,如果没有则新建即可。使用加速器会直接从国内的地址下载 Docker Hub 的镜像,比直接从 Docker Hub下载速度会提高很多。
拉取docker镜像
拉取docker hub的镜像很简单,用户不需要登录就可以通过docker search命令查询Docker Hub官方仓库中的镜像,命令格式为:docker search [options] keyword。同时docker提供了拉取命令:docker pull [options] <origin>/<repository>:<tag>,该命令可以从origin远程仓库(默认Docker Hub )中的repository仓库拉取标签为tag的镜像(如果省略标签则拉取标签为latest的镜像)。
创建docker仓库
上传镜像之前我们需要先登录docker仓库创建一个资源仓库,在Docker Hub通过“Create Repository”按钮来创建一个资源仓库,输入仓库名称和描述并选择公共 public 的仓库或者私有 private 的仓库,输入信息之后点击下方的“Create”按钮就可以完成仓库的创建了。
登录Docker Hub
在仓库中我们可以看到一个“Docker commands”告诉我们如何上传一个新的标签镜像到该仓库,上传仓库指令为:docker push kevinfan2011/docker:tagname。回到docker中我们需要先登录docker hub服务,在docker中通过docker login命令可以输入用户名和密码(密码不显示)即可登录Docker Hub。登录之后会在本地创建一个.docker/config.json文件,该文件保存了用户登录的认证信息。
上传docker镜像
在上传之前先给本地镜像打个tag标签,给镜像打上标签之后才能push。通过docker tag命令将镜像重命名为docker账户名/仓库名称,语法格式为:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]。其中SOURCE_IMAGE指的是本地镜像,TARGET_IMAGE指的是docker账号/docker仓库。指定标签之后就可以开始上传本地镜像标签到镜像仓库,使用docker指令:docker push docker 账号/仓库名称:tagname即可完成镜像上传到Docker Hub(速度比较慢...)。Push成功之后就可以登录到dockerhub网站查看一下刚才创建的仓库名称,里面应该有一个tag为hello-world的镜像了。
删除tag镜像
通过docker tag命令打上标签之后此时仓库中有两个镜像,镜像id相同只是多了一个tag标签(就是多了一个镜像引用)。用镜像id强制删除会物理性的镜像删除(引用也会同时被删除),如果只要想要删除不需要的引用镜像我们可以通过tag来删除。
搭建本地私有仓库
docker提供了registry镜像来搭建本地私有仓库,通过命令:docker run -d -p 5000:5000 --restart=alwarys registry:2会自动下载并启动一个registry容器来创建本地私有仓库服务。此时会在本地启动一个私有仓库服务,监听端口为5000。--restart=alwarys 表示随docker daemon启动一起启动,该仓库默认创建在/var/lib/registry目录下默认情况下仓库会被创建在容器的 /tmp/registry 下(docker默认安装目录为/var/lib/docker),如果怕镜像丢失也可以通过参数-v来指定存放路径。
总结:
Docker将运行环境打包保存至容器使用时直接启动即可,这样就可以实现跨平台在物理机、虚拟机、公有云等环境的中快速迁移和部署。Docker仓库帮助我们在线存储镜像,到哪都可以一键拉取运行,可以实现快速交付到线上。以上内容是小编给大家分享的【Docker实战007:docker仓库使用详解】。希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
为了方便学习,下面附上本文用到的源码:
# mkdir -p /etc/docker
# tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
EOF
# systemctl daemon-reload
# systemctl restart docker
// 从注册服务器registry.hub.docker.com中的ubuntu仓库下载标记为 12.04 的镜像。
$ docker pull registry.hub.docker.com/ubuntu:12.04
Options:
# -a 拉取所有不同标签的镜像(可选参数)
-a, --all-tags Download all tagged images in the repository
# 忽略镜像校验,默认项
--disable-content-trust Skip image verification (default true)
---------------------------------------------------------------------------------
# docker pull ubuntu:12.04 //默认从docker.io/library/ubuntu:12.04下载
# docker login
# docker tag hello-world kevinfan2011/docker:hello-world
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kevinfan2011/docker hello-world bf756fb1ae65 9 months ago 13.3kB
hello-world latest bf756fb1ae65 9 months ago 13.3kB
# docker push kevinfan2011/docker:hello-world
The push refers to repository [docker.io/kevinfan2011/docker]
9c27e219663c: Mounted from library/hello-world
hello-world: digest: sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042 size: 525
# docker rmi --help
Usage: docker rmi [OPTIONS] IMAGE [IMAGE...]
Remove one or more images
Options:
-f, --force Force removal of the image
--no-prune Do not delete untagged parents
------------------------------------------------------------------
# docker rmi kevinfan2011/docker:hello-world
Untagged: kevinfan2011/docker:hello-world
Untagged: kevinfan2011/docker@sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042
Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b
Deleted: sha256:9c27e219663c25e0f28493790cc0b88bc973ba3b1686355f221c38a36978ac63
# cat .docker/config.json
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "*****允许用户登录的token信息*****"
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/19.03.13 (linux)"
}
}
# docker run -d -p 5000:5000 --restart=alwarys registry:2
Unable to find image 'registry:2' locally
2: Pulling from library/registry
cbdbe7a5bc2a: Pull complete
47112e65547d: Pull complete
46bcb632e506: Pull complete
c1cc712bcecd: Pull complete
3db6272dcbfa: Pull complete
Digest: sha256:8be26f81ffea54106bae012c6f349df70f4d5e7e2ec01b143c46e2c03b9e551d
Status: Downloaded newer image for registry:2
78dafde5342f909cc1cd98e5d48c2c671cfae16b82d1c7ced788182a6da4fb48
猜你喜欢
- 2024-11-06 docker仓库Harbor的搭建教程(docker 仓库搭建)
- 2024-11-06 【服务器】创建docker私有仓库从未如此简单
- 2024-11-06 DOCKER本地仓库(docker本地仓库源文件丢失)
- 2024-11-06 如何搭建自己的docker私有仓库(内网搭建docker私有仓库)
- 2024-11-06 学习笔记-Docker 仓库 - 私有仓库
- 2024-11-06 手把手教你使用Docker部署Gitlab仓库
- 2024-11-06 极简Docker仓库操作(docker仓库的作用)
- 2024-11-06 docker容器仓库私服建立(docker仓库的创建)
- 2024-11-06 Docker 系列四(自定义仓库)(docker安装自定义存储目录)
- 2024-11-06 Docker 搭建 GibLab 代码管理仓库
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)