0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Docker镜像的详细讲解

马哥Linux运维 来源:马哥Linux运维 作者:马哥Linux运维 2022-08-02 10:00 次阅读

本文是对 Docker 镜像的详细讲解,讲解了如何安装 Docker、配置 Docker 镜像加速以及操作 Docker 镜像。希望对大家有所帮助~

安装 Docker

CentOS

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker

通过 uname -r 命令查看你当前的内核版本

uname-r

使用root 权限登录 CentOS。确保 yum 包更新到最新

sudoyumupdate

卸载旧版本(如果安装过旧版本的话)

sudoyumremovedockerdocker-commondocker-selinuxdocker-engine

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2

设置yum源

官方源

sudoyum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo

阿里云源

sudoyum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

清华大学源

sudoyum-config-manager--add-repohttps://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

安装docker

sudoyuminstalldocker-ce

也可以查看所有仓库中所有docker版本,并选择特定版本安装

yumlistdocker-ce--showduplicates|sort-r
sudoyuminstalldocker-ce-版本号.ce

启动并加入开机启动

sudosystemctlstartdocker
sudosystemctlenabledocker

验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

dockerversion

Ubuntu

系统要求

Docker CE 支持以下版本的 Ubuntu 操作系统

Artful 17.10 (Docker CE 17.11 Edge +)

Xenial 16.04 (LTS)

Trusty 14.04 (LTS)

Docker CE 可以安装在 64 位的 x86平台或 ARM 平台上。Ubuntu 发行版中,LTS(Long-Term-Support)长期支持版本,会获得 5 年的升级维护支持,这样的版本会更稳定,因此在生产环境中推荐使用 LTS 版本,当前最新的 LTS 版本为 Ubuntu 16.04。

卸载旧版本

旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本:

sudoapt-getremovedocker
docker-engine
docker.io

使用脚本自动安装

在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu 系统上可以使用这套安装脚本:

curl-fsSLget.docker.com-oget-docker.sh
sudoshget-docker.sh--mirrorAzureChinaCloud

执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker CE 的 Edge 版本安装在系统中

启动Docker CE

sudosystemctlenabledocker
sudosystemctlstartdocker

卸载Docker

先执行命令:apt-get autoremove docker-ce

删除 /etc/apt/sources.list.d 目录下的 docker.list 文件

Docker 镜像加速器

国内从Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

Docker 官方提供的中国 registry mirror

阿里云加速器

DaoCloud 加速器

我们以Docker阿里云加速器为例进行介绍。

首先登录阿里云(没有账号请先注册),搜索 容器镜像服务,找到你的专属加速器地址。

地址:https://www.aliyun.com/

Ubuntu 14.04、Debian 7 Wheezy

对于使用 upstart 的系统而言,编辑 /etc/default/docker 文件,在其中的 DOCKER_OPTS 中配置加速器地址:

DOCKER_OPTS="--registry-mirror=https://xxxxxxxx.mirror.aliyuncs.com"

重新启动服务。

sudoservicedockerrestart

Ubuntu 16.04+、Debian 8+、CentOS 7

对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

{
"registry-mirrors":[
"https://xxxxxxxx.mirror.aliyuncs.com"
]
}

注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。

之后重新启动服务。

sudosystemctldaemon-reload
sudosystemctlrestartdocker

Windows 10

对于使用Windows 10 的系统,在系统右下角托盘 Docker图标内右键菜单选择 Settings ,打开配置窗口后左侧导航菜单选择 Daemon 。在 Registry mirrors 一栏中填写加速器地址 https://registry.docker-cn.com,之后点击 Apply 保存后 Docker 就会重启并应用配置的镜像地址了。

macOS

对于使用 macOS 的用户,在任务栏点击 Docker for mac 应用图标 ->Perferences... -> Daemon -> Registry mirrors。在列表中填写加速器地址 https://registry.docker-cn.com 。修改完成之后,点击 Apply & Restart 按钮,Docker 就会重启并应用配置的镜像地址了。

检查加速器是否生效

配置加速器之后,如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行执行 docker info ,如果从结果中看到了如下内容,说明配置成功。

RegistryMirrors:
https://xxxxxxxx.mirror.aliyuncs.com

Docker 镜像

获取镜像

之前提到过,Docker Hub 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像。

从Docker 镜像仓库获取镜像的命令是 docker pull 。其命令格式为:

dockerpull[选项][DockerRegistry地址[:端口号]/]仓库名[:标签]

具体的选项可以通过 docker pull --help 命令看到,这里我们说一下镜像名称的格式。

Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号] 。默认地址是 Docker Hub。

仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名> 。对于 Docker Hub ,如果不给出用户名,则默认为 library ,也就是官方镜像。

比如:

$dockerpullubuntu:16.04
16.04:Pullingfromlibrary/ubuntu
4f53fa4d2cf0:Pullcomplete
6af7c939e38e:Pullcomplete
903d0ffd64f6:Pullcomplete
04feeed388b7:Pullcomplete
Digest:sha256:185fec2d6dbe9165f35e4a1136b4cf09363b328d4f850695393ca191aa1475fd
Status:Downloadednewerimageforubuntu:16.04
docker.io/library/ubuntu:16.04

上面的命令中没有给出 Docker 镜像仓库地址,因此将会从 Docker Hub 获取镜像。而镜像名称是 ubuntu:16.04 ,因此将会获取官方镜像 library/ubuntu 仓库中标签为 16.04 的镜像。

下载过程中可以看到我们之前提及的分层存储的概念,镜像是由多层存储所构成。下载也是一层层的去下载,并非单一文件。下载过程中给出了每一层的 ID 的前 12 位。并且下载结束后,给出该镜像完整的 sha256 的摘要,以确保下载一致性。

在使用上面命令的时候,你可能会发现,你所看到的层 ID 以及 sha256 的摘要和这里不一样。这是因为官方镜像是一致在维护的,有任何新的 bug,或者版本更新,都会进行修复再以原来的标签发布,这样可有确保任何使用这个标签的用户可以获得更安全、更稳定的镜像。

如果从Docker Hub 下载镜像非常缓慢,可以参照镜像加速器一节配置加速器。

运行

有了镜像后,我们就能够以这个镜像为基础启动并运行一个容器。以上面的 ubuntu:16.04 为例,如果我们打算启动里面的 bash 并且进行交互式操作的话,可以执行下面的命令。

$dockerrun-it--rm
ubuntu:16.04
bash

root@e7009c6ce357:/#cat/etc/os-release
NAME="Ubuntu"
VERSION="16.04.4LTS,TrustyTahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu16.04.4LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

docker run 就是运行容器的命令,我们这里简要的说明一下上面用到的参数

it :这是两个参数,一个是 -i :交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。

--rm :这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm 。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。

ubuntu:16.04 :这是指用 ubuntu:16.04 镜像为基础来启动容器。

bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash。

进入容器后,我们可以在 Shell 下操作,执行任何所需的命令。这里,我们执行了 cat /etc/os-release ,这是 Linux 常用的查看当前系统版本的命令,从返回的结果可以看到容器内是 Ubuntu 16.04.4 LTS 系统。

最后们通过 exit 或者 Ctrl + D 退出了这个容器。

列出镜像

要想列出已经下载下来的镜像,可以使用 docker image ls 命令。

$dockerimagels
REPOSITORYTAGIMAGEIDCREATEDSIZE
redislatest5f515359c7f85daysago183MB
nginxlatest05a60462f8ba5daysago181MB
mongo3.2fe9198c04d625daysago342MB
00285df0df875daysago342MB
ubuntu16.04f753707788c54weeksago127MB
ubuntulatestf753707788c54weeksago127MB
ubuntu14.041e0c3dd64ccd4weeksago188MB

列表包含了 仓库名 、标签 、镜像 ID 、创建时间、以及所占用的空间。

其中仓库名、标签在之前的基础概念已经介绍过了。镜像 ID 则是镜像的唯一标识,一个镜像可以对应多个标签。因此,在上面的例子中,我们可以看到 ubuntu:16.04 和 ubuntu:latest 拥有相同的 ID,因为它们对应的是同一个镜像。

镜像体积

如果仔细观察,会注意到,这里标识的所占用空间和在 Docker Hub 上看到的镜像大小不同。比如, ubuntu:16.04 镜像大小,在这里是 127MB ,但是在 Docker Hub 显示的却是 50MB 。

这是因为 Docker Hub 中显示的体积是压缩后的体积。在镜像下载和上传过程中镜像是保持着压缩状态的,因此 Docker Hub 所显示的是镜像下载到本地后,展开的大小,准确说,是展开后的各层所占空间的总和,因为镜像到本地后,查看空间的时候,更关心的是本地磁盘空间占用的大小。

另外一个需要注意的问题是, docker image ls 列表中的镜像体积总和并非是所有镜像实际硬盘消耗,由于 Docker 镜像是多层存储结构,并且可以继承、复用,因此不同镜像可能会因为使用相同的基础镜像,从而拥有共同的层。由于 Docker 使用 Union FS,相同的层只需要保存一份即可,因此实际镜像硬盘占用空间很可能要比这个列表镜像大小的总和要小的多。

你可以通过以下命令来便捷的查看镜像、容器、数据卷所占用空间。

$dockersystemdf
TYPETOTALACTIVESIZERECLAIMABLE
Images2401.992GB1.992GB(100%)
Containers1062.82MB62.82MB(100%)
LocalVolumes90652.2MB652.2MB(100%)
BuildCache

虚悬镜像

尚明的镜像列表中,还可以看到一个特殊的镜像,这个镜像既没有仓库名,也没有标签,均为 。:

00285df0df875daysago342MB

这个镜像原本是有镜像名和标签的,原来为 mongo:3.2,随着官方镜像维护,发布了新版本后,重新 docker pull mongo:3.2 时, mongo:3.2 这个镜像名被转移到了新下载的镜像身上,而旧的镜像上的这个名称则被取消,从而成为了 。除了 docker pull 可能导致这种情况, docker build 也同样可以导致这种现象。由于新旧镜像同名,旧镜像名称被取消,从而出现仓库名、标签均为 的镜像。这类无标签镜像也被称之为 **虚悬镜像(dangling image)**,可以用下面的命令专门显示这类镜像:

$dockerimagels-fdangling=true
REPOSITORYTAGIMAGEIDCREATEDSIZE
00285df0df875daysago342MB

一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除。

$dockerimageprune

中间层镜像

为了加速镜像构建、重复利用资源,Docker 会利用 中间层镜像。所以在使用一段时间后,可能会看到一些依赖的中间层镜像。默认的 docker image ls 列表中只会显示顶层镜像,如果希望显示包括中间层镜像在内的所有镜像的话,需要加 -a 参数。

$dockerimagels-a

这样会看到很多无标签的镜像,与之前的虚悬镜像不同,这些无标签的镜像很多都是中间层镜像,是其他镜像所依赖的镜像。这些无标签镜像不应该删除,否者会导致上层镜像因为依赖丢失而出错。

实际上,这些镜像也没必要删除,因为之前说过,相同的层只会存一遍,而这些镜像是别的镜像的依赖,因此并不会因为它们被列出来而多存了一份,无论如何你也会需要它们。只要删除那些依赖它们的镜像后,这些依赖的中间层镜像也会被连带删除。

列出部分镜像

不加任何参数的情况下,docker image ls 会列出所有顶级镜像,但是有时候我们只希望列出部分镜像。docker iimage ls 有好几个参数可以帮助做到这个事情。

根据仓库名列出镜像

$dockerimagelsubuntu
REPOSITORYTAGIMAGEIDCREATEDSIZE
ubuntu16.04f753707788c54weeksago127MB
ubuntulatestf753707788c54weeksago127MB
ubuntu14.041e0c3dd64ccd4weeksago188MB

列出特定的某个镜像,也就是说指定仓库名和标签

$dockerimagelsubuntu:16.04
REPOSITORYTAGIMAGEIDCREATEDSIZE
ubuntu16.04f753707788c54weeksago127MB

除此之外,docker image ls 还支持强大的过滤器参数 --filter,或者简写 -f。之前我们已经看到了使用过滤器来列出虚悬镜像的用法,塔还有更多的用法。比如,我们希望在 mongo:3.2 之后建立的镜像,可以用下面的命令:

$dockerimagels-fsince=mongo:3.2
REPOSITORYTAGIMAGEIDCREATEDSIZE
redislatest5f515359c7f85daysago183MB
nginxlatest05a60462f8ba5daysago181MB

想查看某个位置之前的镜像也可以,只需要把 since 换成 before 即可。

此外,如果镜像构建时,定义了 LABEL ,还可以通过 LABEL 来过滤。

$dockerimagels-flabel=com.example.version=0.1
...

以特定格式显示

默认情况下, docker image ls 会输出一个完整的表格,但是我们并非所有时候都会需要这些内容。比如,刚才删除虚悬镜像的时候,我们需要利用 docker image ls 把所有的虚悬镜像的 ID 列出来,然后才可以交给 docker image rm 命令作为参数来删除指定的这些镜像,这个时候就用到了 -q 参数。

$dockerimagels-q
5f515359c7f8
05a60462f8ba
fe9198c04d62
00285df0df87
f753707788c5
f753707788c5
1e0c3dd64ccd

--filter 配合 -q 产生出指定范围的 ID 列表,然后送给另一个 docker 命令作为参数,从而针对这组实体成批的进行某种操作的做法在 Docker 命令行使用过程中非常常见,不仅仅是镜像,将来我们会在各个命令中看到这类搭配已完成很强大的功能。因此每次在文档看到过滤器后,可以多注意一下它们的用法。

另外一些时候,我们可能只是对表格的结构不满意,希望自己组织列;或者不希望有标题,这样方便其它程序解析结果等,这就用到了 Go 的模板语法。

比如,下面的命令会直接列出镜像结果,并且只包含镜像ID 和仓库名:

$dockerimagels--format"{

{.ID}}:{

{.Repository}}"
5f515359c7f8:redis
05a60462f8ba:nginx
fe9198c04d62:mongo
00285df0df87:
f753707788c5:ubuntu
f753707788c5:ubuntu
1e0c3dd64ccd:ubuntu

或者打算以表格等距显示,并且有标题行,和默认一样,不过自己定义列:

dockerimagels--format"table{

{.ID}}	{

{.Repository}}	{

{.Tag}}"

删除本地镜像

如果想要删除本地的镜像,可以使用 docker image rm 命令,其格式为:

dockerimagerm[选项]<镜像1>[<镜像2>...]

用 ID、镜像名、摘要删除镜像

其中,<镜像> 可以是 镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要。

比如我们有这么一些镜像:

$dockerimagels
REPOSITORYTAGIMAGEIDCREATEDSIZE
centoslatest0584b3d2cf6d3weeksago196.5MB
redisalpine501ad78535f03weeksago21.03MB
dockerlatestcf693ec9b5c73weeksago105.1MB
nginxlateste43d811ce2f45weeksago181.5MB

我们可以用镜像的完整 ID,也称为 长 ID ,来删除镜像。使用脚本的时候可能会用长 ID,但是人工输入就太累了,所以更多的时候使用 短 ID 来删除镜像。docker image ls 默认列出的就已经是短 ID了,一般取前 3 个字符以上,只要足够区分于别的镜像就可以了。

比如这里,如果我们要删除 redis:alpine 镜像,可以执行:

$dockerimagerm501
Untagged:redis:alpine
Untagged:redis@sha256:f1ed3708f538b537eb9c2a7dd50dc90a706f7debd7e1196c9264edeea521a86d
Deleted:sha256:501ad78535f015d88872e13fa87a828425117e3d28075d0c117932b05bf189b7
Deleted:sha256:96167737e29ca8e9d74982ef2a0dda76ed7b430da55e321c071f0dbff8c2899b
Deleted:sha256:32770d1dcf835f192cafd6b9263b7b597a1778a403a109e2cc2ee866f74adf23
Deleted:sha256:127227698ad74a5846ff5153475e03439d96d4b1c7f2a449c7a826ef74a2d2fa
Deleted:sha256:1333ecc582459bac54e1437335c0816bc17634e131ea0cc48daa27d32c75eab3
Deleted:sha256:4fc455b921edf9c4aea207c51ab39b10b06540c8b4825ba57b3feed1668fa7c7

我们也可以用 镜像名 ,也就是 <仓库名>:<标签> ,来删除镜像。

$dockerimagermcentos
Untagged:centos:latest
Untagged:centos@sha256:b2f9d1c0ff5f87a4743104d099a3d561002ac500db1b9bfa02a783a46e0d366c
Deleted:sha256:0584b3d2cf6d235ee310cf14b54667d889887b838d3f3d3033acd70fc3c48b8a
Deleted:sha256:97ca462ad9eeae25941546209454496e1d66749d53dfa2ee32bf1faabd239d38

当然,更精确的是使用 镜像摘要 删除镜像。

$dockerimagels--digests
REPOSITORYTAGDIGESTIMAGEIDCREATEDSIZE
nodeslimsha256:b4f0e0bdeb578043c1ea6862f0d40cc4afe32a4a582f3be235a3b164422be2286e0c4c8e39133weeksago214MB

$dockerimagermnode@sha256:b4f0e0bdeb578043c1ea6862f0d40cc4afe32a4a582f3be235a3b164422be228
Untagged:node@sha256:b4f0e0bdeb578043c1ea6862f0d40cc4afe32a4a582f3be235a3b164422be228

Untagged 和 Deleted

如果观察上面这几个命令的运行输出信息的话,你会注意到删除行为分为两类,一类是 Untagged,另一类是 Deleted。我们之前介绍过,镜像的唯一标识是其 ID 和摘要,而一个镜像可以有多个标签。

因此当我们使用上面命令删除镜像的时候,实际上是在要求删除某个标签的镜像。所以首先需要做的是将满足我们要求的所有镜像标签都取消,这就是我们看到的 Untagged 的信息。因为一个镜像可以对应多个标签,因此当我们删除了所指定的标签后,可能还有别的标签指向了这个镜像,如果是这种情况,那么 Delete 行为就不会发生。所以并非所有的 docker image rm 都会产生删除镜像的行为,有可能仅仅是取消了某个标签而已。

当该镜像所有的标签都被取消了,该镜像很可能会失去了存在的意义,因此会触发删除行为。镜像是多层存储结构,因此在删除的时候也是从上层向基础层方向依次进行判断删除。镜像的多层结构让镜像复用变动非常容易,因此很有可能某个其它镜像正依赖于当前镜像的某一层。

这种情况,依旧不会触发删除该层的行为。直到没有任何层依赖当前层时,才会真实的删除当前层。这就是为什么,有时候会奇怪,为什么明明没有别的标签指向这个镜像,但是它还是存在的原因,也是为什么有时候会发现所删除的层数和自己 docker pull 看到的层数不一样的源。

除了镜像依赖以外,还需要注意的是容器对镜像的依赖。如果有用这个镜像启动的容器存在(即使容器没有运行),那么同样不可以删除这个镜像。

之前讲过,容器是以镜像为基础,再加一层容器存储层,组成这样的多层存储结构去运行的。因此该镜像如果被这个容器所依赖的,那么删除必然会导致故障。如果这些容器是不需要的,应该先将它们删除,然后再来删除镜像。

用 docker image ls 命令来配合

像其它可以承接多个实体的命令一样,可以使用 docker image ls -q 来配合使用 docker image rm ,这样可以成批的删除希望删除的镜像。我们在 “镜像列表”章节介绍过很多过滤镜像列表的方式都可以拿过来使用。

比如,我们需要删除所有仓库名为 redis 的镜像:

dockerimagerm$(dockerimagels-qredis)

或者删除所有在 mongo:3.2 之前的镜像:

dockerimagerm$(dockerimagels-q-fbefore=mongo:3.2)

充分利用你的想象力和 Linux 命令行的强大,你可以完成很多非常赞的功能。

CentOS/RHEL 的用户需要注意的事项

在Ubuntu/Debian 上有 UnionFS 可以使用,如 aufs 或者 overlay2,而 CentOS 和 RHEL 的内核中没有相关驱动。因此对于这类系统,一般使用 devicemapper 驱动利用LVM 的一些机制来模拟分层存储。这样的做法除了性能比较差外,稳定性一般也不好,而且配置相对复杂。

Docker 安装在 CentOS/RHEL 上后,会默认选择 devicemapper,但是为了简化配置,其 devicemapper 是跑在一个稀疏文件模拟的块设备上,也被称为 loop-lvm。这样的选择是因为不需要额外配置就可以运行 Docker,这是自动配置唯一能做到的事情。但是 loop-lvm 的做法非常不好,其稳定性、性能更差,无论是日志还是 docker info 中都会看到警告信息。官方文档有明确的文章讲解了如何配置块设备给 devicemapper 驱动做存储层的做法,这类做法也被称为配置 direct-lvm。

除了前面说到的问题外,devicemapper + loop-lvm 还有一个缺陷,因为它是稀疏文件,所以它会不断增长。用户在使用过程中会注意到/var/lib/docker/devicemapper/devicemapper/data不断增长,而且无法控制。

很多人会希望删除镜像或者可以解决这个问题,结果发现效果并不明显。原因就是这个稀疏文件的空间释放后基本不进行垃圾回收的问题。因此往往会出现即使删除了文件内容,空间却无法回收,随着使用这个稀疏文件一直在不断增长。

所以对于 CentOS/RHEL 的用户来说,在没有办法使用 UnionFS 的情况下,一定要配置 direct-lvm 给 devicemapper,无论是为了性能、稳定性还是空间利用率。

或许有人注意到了 CentOS 7 中存在被 backports 回来的 overlay 驱动,不过 CentOS 里的这个驱动达不到生产环境使用的稳定程度,所以不推荐使用。

审核编辑:彭静

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件包
    +关注

    关注

    0

    文章

    83

    浏览量

    11310
  • 镜像
    +关注

    关注

    0

    文章

    153

    浏览量

    10562
  • Docker
    +关注

    关注

    0

    文章

    430

    浏览量

    11573
收藏 人收藏

    评论

    相关推荐

    怎么构建docker镜像仓库软件

    Docker Registry】用docker registry 镜像搭建私有测试仓库
    发表于 08-13 11:03

    如何在RDKx3部署docker镜像

    一种在RDKx3部署docker镜像跑tros历程的方法 为了保持主系统环境干净整洁,有在docker中部署代码的习惯。 docker pull ningcong/rdkx3:v0.1
    发表于 08-02 11:02

    Docker上的Alpine Linux镜像建立

    如何建立你自己的Docker镜像2016-03-18 14:33 Alpine Linux的什么是Docker社区所钟爱?轻量级容器意味着更多的计算资源。Alpine Linux的确是轻型
    发表于 10-12 11:52 0次下载

    浅析Docker镜像本地存储机制及容器启动原理

    Docker 镜像不是一个单一的文件,而是有多层构成。我们可通过 docker images 获取本地的镜像列表及对应的元信息, 接着可通过dock
    发表于 10-19 14:17 2323次阅读

    一种基于镜像层观念的Docker注册表缓存预取策略

    随着容器技术的广泛普及,大型 Docker公共注册表使用对象存储服务来解决镜像数量剧増的问题,饣这种松耦合的注册表设计导致较高的延迟开销。为了増强注册表性能,提岀一种基于镜像层关联的 Dock
    发表于 04-01 14:14 16次下载
    一种基于<b class='flag-5'>镜像</b>层观念的<b class='flag-5'>Docker</b>注册表缓存预取策略

    国内Docker CE 镜像源的配置

    阿里云官方镜像站: https://developer.aliyun.com/mirror/?utm_content=g_1000303593   Docker CE 是免费的 Docker 产品
    的头像 发表于 11-09 09:16 3285次阅读

    Docker—简介与镜像用法

    阿里云官方镜像站: ​​https://developer.aliyun.com/mirror/?utm_content=g_1000303593​​ ​ 一、容器简介 Docker是管理容器的引擎
    发表于 11-25 16:28 395次阅读
    <b class='flag-5'>Docker</b>—简介与<b class='flag-5'>镜像</b>用法

    go项目怎么让docker镜像体积减小

    【导读】go 项目怎么让 docker 镜像体积减小?本文做了详细介绍。
    的头像 发表于 06-12 15:07 1070次阅读

    go项目怎么让docker镜像体积减小

    go 项目怎么让 docker 镜像体积减小?本文做了详细介绍。
    的头像 发表于 06-23 10:49 929次阅读

    从零开始学习制作、以及使用Tina的Docker编译镜像

    学习制作、以及使用Tina的Docker编译镜像
    的头像 发表于 08-28 11:45 1796次阅读
    从零开始学习制作、以及使用Tina的<b class='flag-5'>Docker</b>编译<b class='flag-5'>镜像</b>

    减少docker镜像大小的方法

    Docker 是一种容器引擎,可以在容器内运行一段代码。Docker 镜像是在任何地方运行您的应用程序而无需担心应用程序依赖性的方式。
    的头像 发表于 05-15 11:13 541次阅读
    减少<b class='flag-5'>docker</b><b class='flag-5'>镜像</b>大小的方法

    docker 搜索镜像,docker查看镜像详细信息(docker下载镜像命令)

    Docker Hub是集中管理的Docker镜像注册中心。通过Docker 用户可以在注册中心搜索、下载和使用CLI命令行工具中的镜像。以下
    的头像 发表于 07-19 09:46 1061次阅读

    如何在Windows系统上设置Docker镜像

    在使用 Docker 进行镜像下载和构建时,由于众所周知的原因,国内用户可能会遇到下载速度慢或者无法连接的问题。为了解决这个问题,我们可以使用国内的镜像源来加速下载速度。本文将介绍如何在 Windows 系统上设置
    的头像 发表于 10-24 16:55 1435次阅读

    构建docker镜像应该遵循哪些原则

    构建 Docker 镜像时,应遵循以下原则: 单一职责:每个镜像应只包含一个应用或服务,避免将多个应用或服务放在同一个镜像中。这样可以确保镜像
    的头像 发表于 11-23 09:41 370次阅读

    如何使用dockerfile创建镜像

    Docker是一个开源的平台,用于快速构建、打包、部署应用程序的容器化工具。而Dockerfile是一个文本文件,包含了一组可自动化构建Docker镜像的指令。本文将详细介绍
    的头像 发表于 11-23 09:52 324次阅读