二、Docker镜像;容器;仓库含义及操作

本文详细介绍了Docker的镜像、容器和仓库概念。镜像是只读的Linux文件系统,由多个层组成,容器则在镜像基础上添加可写层运行应用。仓库是存储镜像的地方,包括公共的Docker Hub和私有仓库。文中还涵盖了Docker镜像的搜索、下载、查看、打标签、推送和删除等操作。
摘要由CSDN通过智能技术生成

一、含义解释

镜像(Images)

Docker 镜像是一个只读的 Linux 文件系统,包含可在 Linux 内核上运行的程序和相应的数据。

镜像具有以下两个特征:

1. 分层(Layer):镜像可以由多个中间层组成,多个镜像可以共享同一中间层。通过在镜像添加多一层来生成新的镜像。

2. 只读(read-only):镜像在构建完成后不可修改。添加一层构建新的镜像实际上是通过创建一个临时的容器,在容器上增加或删除文件,从而形成新的镜像。

举例:

Explore Docker's Container Image Repository | Docker Hub

我们通过命令行也可以看镜像信息,下面会提及;

容器(Docker)

类似 linux 系统环境,运行和隔离应用。

容器从镜像启动的时候,docker 会在镜像的最上一层创建一个可写层,镜像本身是只读的,保持不变。容器与镜像的关系,就如同面向编程中对象与类之间的关系。

因为容器是通过镜像来创建的,所以必须先有镜像才能创建容器,而生成的容器是一个独立
于宿主机的隔离进程,并且有属于容器自己的网络和命名空间。

如上述,镜像由多个中间层(layer)组成,生成的镜像是只读的,但容器却是可读可写的,这是因为容器是在镜像上面添一层读写层(writer/read layer)来实现的,如下图所示:

仓库(Repository)

集中存储镜像的地方。仓库与仓库服务器(Registry)是两个不同的概念。

Docker Hub 是一个公共仓库,用户可以获取镜像,也可以将自己构建的镜像存放到其中。

公共仓库

公共仓库一般是指 Docker Hub,前面我们已经多次介绍如何从 Docker Hub 获取镜像,除了
获取镜像外,我们也可以将自己构建的镜像存放到 Docker Hub,这样,别人也可以使用我们
构建的镜像。

私有仓库

有时候自己部门内部有一些镜像要共享时,如果直接导出镜像拿给别人又比较麻烦,使用像
Docker Hub 这样的公共仓库又不是很方便,这时候我们可以自己搭建属于自己的私有仓库服
务,用于存储和分布我们的镜像;

二、Docker 镜像以及仓库

Docker 镜像就是一个 Linux 的文件系统(Root FileSystem),这个文件系统里面包含可以运行在 Linux 内核的程序以及相应的数据。

docker search 搜索镜像

[root@localhost docker]# docker search nginx

也就是官网里的nginx版本;

注意:如果直接pull,是下载的latest最新版本,如果有所需版本要求,需要:后面加对应tag

[root@localhost ~]# docker search --help

这是关于“docker search”命令的使用信息。该命令用于在Docker Hub上搜索镜像,提供了一些选项,包括过滤输出、格式化输出、限制搜索结果数量以及不截断输出的选项。

docker pull 下载一个镜像

[root@localhost ~]# docker pull nginx

`docker pull nginx`命令实际上是在Docker中拉取(下载)一个名为"nginx"的镜像。

1. 用户在命令行中输入`docker pull nginx`。
2. Docker客户端接收到这个命令,并将其发送到Docker守护进程。
3. Docker守护进程收到命令后,开始从默认的镜像仓库(通常是Docker Hub)中下载nginx镜像。
4. Docker守护进程向镜像仓库发送请求,寻找名为nginx的镜像。
5. 如果镜像仓库中存在名为nginx的镜像,Docker守护进程开始下载镜像的各个层(layers)。
6. 下载完成后,Docker守护进程将这些层组装在一起,形成一个完整的nginx镜像。
7. 最后,Docker守护进程将下载好的nginx镜像保存在本地的镜像存储中。

层的概念就是为你pull的镜像服务实现提供底层以及其他的必需服务~

docker images 查看已具备镜像

[root@localhost ~]# docker images

docker tag 给镜像打标签

给镜像打标签可以创建自己的镜像

镜像结构: registryname/repositoryname/imagename:tagname

旧镜像名称(也可以使用imagesid)/镜像仓库名称/镜像名称:tag(自定)

例如:nginx.io/library/mginx:8.3.2011

[root@localhost ~]# docker tag 605c77e624dd docker.io/weiyi/nginx:v1.0
[root@localhost ~]# docker images

把本地镜像推送到 dockerHub 仓库

需要在 dockerHub 上面注册一个账户

https://hub.docker.com/icon-default.png?t=N7T8https://hub.docker.com/

用作实验挑选一个小的镜像来进行,且进行打标签操作后上传;

Alpine是一个轻量级的Linux发行版,它以精简和高效而闻名。Alpine Linux专注于安全、易用和小型化,因此在容器化应用程序和嵌入式系统中广泛使用。

Alpine的镜像非常小,因为它使用了musl libc和BusyBox,这使得它在资源利用率方面非常高效。Alpine也被广泛用于构建Docker容器,因为它的镜像大小小,启动速度快,同时也提供了强大的包管理工具和软件库。

Alpine Linux在容器化应用程序中很受欢迎,但并不是所有的镜像都是基于Alpine Linux构建的。

[root@localhost ~]# docker pull alpine

打标签
[root@localhost ~]# docker tag alpine docker.io/weiyi/alpine:v1.0

使用 docker login 本地登录 dockerHub

[root@localhost ~]# docker login

登录成功~

而且会将登录信息,保存至config.json文件中

推送一个镜像;

这里需要注意一个问题:

denied: requested access to the resource is denied

出现这个几个注意点:

1、镜像的名字没有按照规范命名(一般这个居多)

2、未登录

[root@localhost ~]# docker tag weiyi/alpine:v1.0  weiyi075/alpine:v1.0
[root@localhost ~]# docker push weiyi075/alpine:v1.0 

push成功~

再push一个最新的:

[root@localhost ~]# docker push weiyi075/alpine:latest

docker rmi 删除镜像

查看本地镜像
[root@localhost ~]# docker images | grep nginx

删除weiyi/nginx

[root@localhost ~]# docker rmi weiyi/nginx:v1.0

注意:这样删除只会删除对应的标签(删除标签可以这么操作)

要删除 imagesID 为 605c77e624dd 的镜像需要通过 id 删除 

[root@localhost ~]# docker rmi -f  605c77e624dd

一并删除了id为 605c77e624dd 的镜像(标签/非标签都删除了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵唯一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值