Docker 镜像仓库
发布时间:2023-06-06 14:10:55 所属栏目:教程 来源:
导读:目前 Docker 官方维护了一个公共仓库 Docker Hub,这是一个用于管理公共镜像的地方,我们可以找到各种镜像,也可以把我们自己的镜像推送上去。
当然,根据需要我们也可以搭建私有的镜像仓库,用于管理自己的镜像。
当然,根据需要我们也可以搭建私有的镜像仓库,用于管理自己的镜像。
目前 Docker 官方维护了一个公共仓库 Docker Hub,这是一个用于管理公共镜像的地方,我们可以找到各种镜像,也可以把我们自己的镜像推送上去。 当然,根据需要我们也可以搭建私有的镜像仓库,用于管理自己的镜像。 1. 登入登出 如果没有账号,我们需要在 Docker Hub 上免费注册一个 Docker 账号。保存好账号密码,进入 Linux 环境,输入: docker login 然后输入账号密码登录。 使用 docker logout 可以登出账号。 2. 搜索镜像 我们可以用 docker search 这个命令搜索 Docker Hub 中的镜像。 比如我们搜索一下redis的镜像 docker search redis 可以看到返回了很多包含 redis 关键字的信息,返回的信息中从左到右依次是: 镜像名字、描述、star关注数、是否官方创建、是否自动创建。 根据是否是官方提供,可将镜像资源分为两类: 一种是类似 centos 这样的镜像,被称为基础镜像或根镜像。这些基础镜像由 Docker 公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字; 还有一种类型,比如 bitnami/redis镜像,它是由 Docker 的用户bitnami创建并维护的,因此带有用户名称前缀。可以通过前缀 username/ 来指定使用某个用户提供的镜像。 通常我们更青睐官方构建的镜像。 3. 下载镜像 我们演示一下如何下载 redis 镜像: docker pull redis 默认会拉取 latest 版本,如果要指定版本,需要在镜像后标记版本,如 dockre pull redis:3.2 运行这个命令docker pull redis后,Docker 就会开始从镜像仓库中拉取我们所指定的镜像了。 在控制台中,我们可以看到镜像拉取的进度。 下载进度会分为几行,每一行代表的就是一个镜像层。 Docker 首先会拉取镜像所基于的所有镜像层,之后再单独拉取每一个镜像层并组合成这个镜像。如果在本地已经存在相同的镜像层,那么 Docker 就直接略过这个镜像层的拉取而直接采用本地的内容。 镜像在被拉取之后就存放到了本地,接受 Docker 管理,我们可以通过 docker images 命令看到它们。 4. 上传镜像 Docker hub用户账户登录后,通过 docker push 命令,把自己创建的镜像上传到仓库中来共享. docker push <本地镜像名> 5. 删除镜像 删除镜像的命令是 docker image rm,参数是镜像的名称或 ID 使用命令docker image rm redis:latest可以删除刚才拉取的 redis 镜像,同时Docker 会自动删掉无用、没有依赖的镜像层。 6. 搭建Docker 私有仓库 执行以下命令,使用Docker运行私有仓库服务registry。 docker run -d -v /root/registry:/var/lib/registry -p 6000:5000 --restart=always --name registry registry Tips: 此命令会启动一个容器,设定本地的 /root/registry 目录存储上传的镜像。 配置/etc/docker/daemon.json,添加一行insecure-registries配置 { ... "insecure-registries": ["127.0.0.1:6000"] ... } 127.0.0.1:6000是我们上面的自定义镜像仓库服务的地址端口。 测试私有镜像仓库 下面我们将redis:latest镜像改个名字,传到私有仓库。 # 将redis:latest镜像名称改为127.0.0.1:6000/myredis:v1 # 127.0.0.1:6000/xxx是固定写法,与之前的地址对应 docker tag redis:latest 127.0.0.1:6000/myredis:v1 # 上传到私有仓库 docker push 127.0.0.1:6000/myredis:v1 # 查看私有仓库中的镜像 curl http://127.0.0.1:6000/v2/_catalog 得到结果 {"repositories":["myredis"]} 说明上传成功。 接下来,我们将本地的127.0.0.1:6000/myredis:v1删除,尝试从私有仓库中拉去 # 删除镜像 docker rmi 127.0.0.1:6000/myredis:v1 # 把redis镜像也删除掉,这样可以清理掉相关的缓存层,使后面镜像的下载过程和结果更清楚 docker rmi redis # 拉取镜像 docker pull 127.0.0.1:6000/myredis:v1 运行docker images可以看到此镜像已经被缓存到本地了。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |