96SEO 2026-02-20 09:07 3
情况说明Docker支持在主流的操作系统平台上使用包括Windows系统、Linux系统及MacOS系统等。

目前最新的RedHat、CentOS、Ubuntu等操作系统官方软件源中都已经默认自带了Docker包可以直接安装使用但是比较旧不推荐使用。
可以用Docker官方的YUM源进行配置进行安装较新的版本。
/etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
/etc/yum.repos.d/CentOS-Base.repo
/etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
/etc/yum.repos.d/CentOS-Base.repo
gpgkeyhttp://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
/etc/yum.repos.d/docker-ce.repo
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
/etc/yum.repos.d/docker-ce.repo
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
/etc/yum.repos.d/docker-ce.repo
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
/etc/yum.repos.d/docker-ce.repo
/etc/yum.repos.d/docker-ce.repo
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(mirrors.aliyun.com)|220.181.165.67|:443...
“/etc/yum.repos.d/docker-ce.repo”100%[]
“/etc/yum.repos.d/docker-ce.repo”
/etc/yum.repos.d/docker-ce.repo
/etc/yum.repos.d/docker-ce.repo
警告/var/cache/yum/x86_64/7/docker-ce-stable/packages/docker-buildx-plugin-0.14.1-1.el7.x86_64.rpm:
https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
docker-ce-cli-26.1.4-1.el7.x86_64
docker-ce-rootless-extras-26.1.4-1.el7.x86_64
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
[https://41q9iv61.mirror.aliyuncs.com]
[https://41q9iv61.mirror.aliyuncs.com,https://docker.cloudmessage.top,https://registry.docker-cn.com,https://docker.nju.edu.cn,https://registry.cn-hangzhou.aliyuncs.com,https://mirror.ccs.tencentyun.com,https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com,http://hub-mirror.c.163.com,http://f1361db2.m.daocloud.io]
[https://41q9iv61.mirror.aliyuncs.com,https://docker.cloudmessage.top,https://registry.docker-cn.com,https://docker.nju.edu.cn,https://registry.cn-hangzhou.aliyuncs.com,https://mirror.ccs.tencentyun.com,https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com,http://hub-mirror.c.163.com,http://f1361db2.m.daocloud.io]}EOF
(/usr/lib/systemd/system/docker.service;
/etc/systemd/system/multi-user.target.wants/docker.service
/usr/lib/systemd/system/docker.service.
(/usr/lib/systemd/system/docker.service;
/system.slice/docker.service└─1348
--containerd/run/containerd/containerd.sock12月
time2024-12-11T18:45:24.01203902008:00
time2024-12-11T18:45:24.06309243208:00
time2024-12-11T18:45:24.39053450108:00
time2024-12-11T18:45:24.41269731508:00
time2024-12-11T18:45:24.41283116708:00
time2024-12-11T18:45:24.49210754108:00
安装好的Docker系统有两个程序Docker服务端和Docker客户端其中Docker服务端是一个服务进程负责管理所有容器Docker客户端则扮演着Docker服务端的远程控制器可以用来控制Docker的服务端进程大部分情况下Docker服务端和客户端运行在一台机器上
安装包下载地址https://download.docker.com/linux/static/stable
https://download.docker.com/linux/static/stable/x86_64/docker-26.1.0.tgz
docker-26.1.0.tgz----------------------------------------------------------------------------------------
/usr/bin/----------------------------------------------------------------------------------------
hello-world----------------------------------------------------------------------------------------
/usr/lib/systemd/system/docker.service[Unit]
Documentationhttps://docs.docker.com
Wantsnetwork-online.target[Service]
WantedBymulti-user.target#重新加载systemctl服务并开启Docker设置为开机自启动
https://download.docker.com/linux/static/stable/x86_64/docker-26.1.0.tgz
https://download.docker.com/linux/static/stable/x86_64/docker-26.1.0.tgz
https://download.docker.com/linux/static/stable/x86_64/docker-26.1.0.tgz
(download.docker.com)|99.86.4.51|:443...
[73723712/73723712])[rootMineGi
/usr/lib/systemd/system/docker.service
Documentationhttps://docs.docker.com
Wantsnetwork-online.target[Service]
/usr/lib/systemd/system/docker.service
EngineDocumentationhttps://docs.docker.comAfternetwork-online.target
firewalld.serviceWantsnetwork-online.target[Service]TypenotifyExecStart/usr/bin/dockerdExecReload/bin/kill
$MAINPIDLimitNOFILEinfinityLimitNPROCinfinityTimeoutStartSec0DelegateyesKillModeprocessRestarton-failureStartLimitBurst3StartLimitInterval60s[Install]WantedBymulti-user.targeteof
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
[https://41q9iv61.mirror.aliyuncs.com]
[https://41q9iv61.mirror.aliyuncs.com,https://docker.cloudmessage.top,https://registry.docker-cn.com,https://docker.nju.edu.cn,https://registry.cn-hangzhou.aliyuncs.com,https://mirror.ccs.tencentyun.com,https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com,http://hub-mirror.c.163.com,http://f1361db2.m.daocloud.io],
[https://41q9iv61.mirror.aliyuncs.com,https://docker.cloudmessage.top,https://registry.docker-cn.com,https://docker.nju.edu.cn,https://registry.cn-hangzhou.aliyuncs.com,https://mirror.ccs.tencentyun.com,https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com,http://hub-mirror.c.163.com,http://f1361db2.m.daocloud.io],}EOF
[https://41q9iv61.mirror.aliyuncs.com,https://docker.cloudmessage.top,https://registry.docker-cn.com,https://docker.nju.edu.cn,https://registry.cn-hangzhou.aliyuncs.com,https://mirror.ccs.tencentyun.com,https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com,http://hub-mirror.c.163.com,http://f1361db2.m.daocloud.io],}EOF
(/usr/lib/systemd/system/docker.service;
/etc/systemd/system/multi-user.target.wants/docker.service
/usr/lib/systemd/system/docker.service.
(/usr/lib/systemd/system/docker.service;
/system.slice/docker.service├─1204
/var/run/docker/containerd/containerd.toml12月
time2024-12-11T18:56:32.06568024308:00
time2024-12-11T18:56:32.06570633108:00
time2024-12-11T18:56:32.95303229008:00
time2024-12-11T18:56:32.95402495308:00
time2024-12-11T18:56:33.24437431808:00
time2024-12-11T18:56:33.32129913808:00
time2024-12-11T18:56:33.35408383808:00
time2024-12-11T18:56:33.35438280808:00
time2024-12-11T18:56:33.39361667408:00
注意事项二进制安装的docker多了一个containerd目录
容器的相关信息每个容器都有一个对应的包括镜像的各个层和元数据信息
/usr/libexec/docker/cli-plugins/docker-buildxcompose:
情况说明Docker创建容器前需要本地存在对应的镜像如果本地加载不到相关镜像Docker默认就会尝试从官方镜像仓库
https://hub.docker.com下载。
使用docker
search命令只能査找镜像镜像的标签无法査找因此如果需要査找docker标签需要从网页**问镜像仓库https://hub.docker.com进行查找。
目前无法search到镜像列表此操作可以略过。
情况说明对于Docker镜像来说如果下载镜像时不指定标签则默认会下载仓库中最新版本的镜像即选择标签为latest也可以通过指定的标签来下载特定版本的某一镜像。
这里标签就是用来区分镜像版本的。
输出结果从整个下载的过程可以看出镜像文件是由若干层Layer组成我们称为AUFS(联合文件系统)是实现增量保存于更新的基础下载过程中会输出镜像的各层信息。
镜像下载到本地之后就可以随时使用该镜像了。
sha256:fb197595ebe76b9c0c14ab68159fd3c08bd067ec62300583543f0ebda353b5be
sha256:31de7d2fd0e751685e57339d2b4a4aa175aea922e592d36a7078d72db0a45639
完整的镜像名称docker.io/library/ginx:1.19.5
/var/lib/docker/image/overlay2/
/var/lib/docker/image/overlay2/repositories.json
/var/lib/docker/image/overlay2/
/var/lib/docker/image/overlay2/repositories.json
{Repositories:{nginx:{nginx:1.19.5:sha256:7baf28ea91eb59a68b3b3a82873d413dc9f1b6e0b89d5ad627ad80154f546be5,nginx:latest:sha256:66f8bdd3810c96dc5c28aec39583af731b34a2cd99471530f53c8794ed5b423e,nginxsha256:31de7d2fd0e751685e57339d2b4a4aa175aea922e592d36a7078d72db0a45639:sha256:7baf28ea91eb59a68b3b3a82873d413dc9f1b6e0b89d5ad627ad80154f546be5,nginxsha256:fb197595ebe76b9c0c14ab68159fd3c08bd067ec62300583543f0ebda353b5be:sha256:66f8bdd3810c96dc5c28aec39583af731b34a2cd99471530f53c8794ed5b423e}}}[rootMineGi
输出结果镜像的详细信息中包括创建时间、系统版本、主机名、域名、用户、卷、标签、操作系统、设备ID等各种信息。
sha256:66f8bdd3810c96dc5c28aec39583af731b34a2cd99471530f53c8794ed5b423e,RepoTags:
[nginxsha256:fb197595ebe76b9c0c14ab68159fd3c08bd067ec62300583543f0ebda353b5be],Parent:
sha256:7baf28ea91eb59a68b3b3a82873d413dc9f1b6e0b89d5ad627ad80154f546be5,RepoTags:
sha256:7baf28ea91eb59a68b3b3a82873d413dc9f1b6e0b89d5ad627ad80154f546be5,RepoTags:
10-listen-on-ipv6-by-default.sh
情况说明当需要把一台机器上的镜像迁移到另一台机器上的时候可以将镜像保存成本地文件这一个过程叫做存出导出镜像可以使用docker
命令示例如果导出镜像的时候不指定标签默认为导出该镜像的所有标签
#为本地的nginx镜像添加新标签没有指定新标签使用默认的latest标签
#没有指定新标签使用默认的latest标签如果之前有latest标签会被替换
rmi命令可以删除多余的镜像。
删除镜像的操作有两种方法使用镜像的标签或者使用镜像的ID删除镜像。
#当一个镜像有多个标签时只是删除其中指定的标签如果没指定标签默认会删除latestdocker
#会彻底删除该ID号的镜像如果镜像ID重复时不让删除可以使用-f强制删除
sha256:66f8bdd3810c96dc5c28aec39583af731b34a2cd99471530f53c8794ed5b423e
sha256:861885804cea72da66a857f56e2d08ef29d8db273745d46e9f192553362b943d
sha256:bced374ce582002f98d19b5a73a4acd9945fed7ed80222c4a3f9ecd6debdfbea
sha256:b3057aca5d4f2d9f34b63f2fa532d7164c42daf3c6741ab3baef4afee5310579
sha256:721c11eb2640980a3d5de69cb15c3f86484cf9070ef623720a54d03f699656dc
sha256:f141f959fda67ad077ac28920ad56ca36ef7cb54fe437559a18d62075afc2cd6
sha256:d0edcb20c85bbe98d67cb15ed1ec313958d9fff0834e5cf8aa64cb30e48790c7
sha256:c0f1022b22a9b36851b358f44e5475e39d166e71a8073cf53c894a299239b1c5
sha256:7baf28ea91eb59a68b3b3a82873d413dc9f1b6e0b89d5ad627ad80154f546be5
sha256:76568a8765bf6788bab06a4c283b5ca6669def93eba5c1f0fc887b159f6e1dc1
sha256:ef3c14608491697162ea3cc095a1c0c27cd6d4053aa3ea09f91c756379ebc8d1
sha256:b538d73544a75eec8322716997990d289f2581169a82b763a0e1037c669f167d
sha256:89942a8c1027ff865a14b0a807142453493474831ebc47c312f05ec640b16254
sha256:87c8a1d8f54f3aa4e05569e8919397b65056aa71cdf48b7f061432c98475eee9
rmi命令只是删除该镜像多个标签中的指定标签不会影响镜像文件相当于只是删除了镜像的一个别名而己但该镜像只剩下一个标签的时候就要小心了再使用删除命令就会彻底删除该镜像。
当使用docker
rmi命令后面跟上镜像的ID号时必须确保该镜像没有被容器使用才能进行删除时系统会先删除掉所有指向该镜像的标签然后除该镜像文件本身。
如果该镜像已经被容器使用正确的做法是先删除依赖该镜像的所有容器再去除镜像。
情况说明将之前存出的镜像或从其它方法获取的镜像文件存入到本地镜像列表中这一过程叫做载入导入镜像
SHA256:gWbFfV9d3KPbh3aZzedG04X6pxEhITjO0bESQoL98w.
MD5:15:28:ac:c6:98:7f:65:87:2d:7a:45:54:e1:d4:57:f5.
情况说明本地存储的镜像越来越多就需要指定一个专门存放这些镜像的地方也就是仓库了。
目前比较方便的就是公共仓库默认上传到Docker
login命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前需要对本地镜像添加新的标签然后再使用docker
Hub官方仓库无法登录我们可以使用国内的镜像仓库比如阿里云的可以免费使用个人仓库。
后期也可以搭建个人镜像仓库。
阿里云容器镜像服务https://cr.console.aliyun.com/
registry.cn-beijing.aliyuncs.com
registry.cn-beijing.aliyuncs.com/mg-docker/nginx:[镜像版本号]3.
registry.cn-beijing.aliyuncs.com
registry.cn-beijing.aliyuncs.com/mg-docker/nginx:[镜像版本号]
registry.cn-beijing.aliyuncs.com/mg-docker/nginx:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
4.
从ECS推送镜像时可以选择使用镜像仓库内网地址。
推送速度将得到提升并且将不会损耗您的公网流量。
registry-vpc.cn-beijing.aliyuncs.com
tag命令重命名镜像并将它通过专有网络地址推送至Registry。
registry.aliyuncs.com/acs/agent
registry-vpc.cn-beijing.aliyuncs.com/acs/agent:0.7-dfb6816
registry-vpc.cn-beijing.aliyuncs.com/acs/agent:0.7-dfb6816
registry.cn-beijing.aliyuncs.com
registry.cn-beijing.aliyuncs.com
registry.cn-beijing.aliyuncs.com
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin
registry.cn-beijing.aliyuncs.com/mg-docker/nginx:[镜像版本号]
registry.cn-beijing.aliyuncs.com/mg-docker/nginx:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
registry.cn-beijing.aliyuncs.com/mg-docker/nginx:1.19.5
registry.cn-beijing.aliyuncs.com/mg-docker/nginx:1.19.5
registry.cn-beijing.aliyuncs.com/mg-docker/nginx:1.19.5
registry.cn-beijing.aliyuncs.com/mg-docker/nginx
registry.cn-beijing.aliyuncs.com/mg-docker/nginx:1.19.5
[registry.cn-beijing.aliyuncs.com/mg-docker/nginx]
sha256:e0f65235cc7bca84baf18bb5146faa7413225bfd1013b7c72f0b85b153deccb6
registry.cn-beijing.aliyuncs.com/mg-docker/nginx:[镜像版本号]
registry.cn-beijing.aliyuncs.com/mg-docker/nginx:1.19.5
sha256:66f8bdd3810c96dc5c28aec39583af731b34a2cd99471530f53c8794ed5b423e
sha256:861885804cea72da66a857f56e2d08ef29d8db273745d46e9f192553362b943d
sha256:bced374ce582002f98d19b5a73a4acd9945fed7ed80222c4a3f9ecd6debdfbea
sha256:b3057aca5d4f2d9f34b63f2fa532d7164c42daf3c6741ab3baef4afee5310579
sha256:721c11eb2640980a3d5de69cb15c3f86484cf9070ef623720a54d03f699656dc
sha256:f141f959fda67ad077ac28920ad56ca36ef7cb54fe437559a18d62075afc2cd6
sha256:d0edcb20c85bbe98d67cb15ed1ec313958d9fff0834e5cf8aa64cb30e48790c7
sha256:c0f1022b22a9b36851b358f44e5475e39d166e71a8073cf53c894a299239b1c5
registry.cn-beijing.aliyuncs.com/mg-docker/nginx:1.19.5
registry.cn-beijing.aliyuncs.com/mg-docker/nginxsha256:e0f65235cc7bca84baf18bb5146faa7413225bfd1013b7c72f0b85b153deccb6
sha256:7baf28ea91eb59a68b3b3a82873d413dc9f1b6e0b89d5ad627ad80154f546be5
sha256:76568a8765bf6788bab06a4c283b5ca6669def93eba5c1f0fc887b159f6e1dc1
sha256:ef3c14608491697162ea3cc095a1c0c27cd6d4053aa3ea09f91c756379ebc8d1
sha256:b538d73544a75eec8322716997990d289f2581169a82b763a0e1037c669f167d
sha256:89942a8c1027ff865a14b0a807142453493474831ebc47c312f05ec640b16254
sha256:87c8a1d8f54f3aa4e05569e8919397b65056aa71cdf48b7f061432c98475eee9
registry.cn-beijing.aliyuncs.com/mg-docker/nginx:1.19.5
sha256:e0f65235cc7bca84baf18bb5146faa7413225bfd1013b7c72f0b85b153deccb6
registry.cn-beijing.aliyuncs.com/mg-docker/nginx:1.19.5
registry.cn-beijing.aliyuncs.com/mg-docker/nginx:1.19.5
registry.cn-beijing.aliyuncs.com/mg-docker/nginx
情况说明容器是镜像的一个运行实例是独立运行的一个或一组应用以及它们所必需的运行环境包括文件系统、系统类库、shell
环境等。
镜像是只读模板而容器会给这个只读模板一个额外的可写层。
create创建的新容器默认处于停止状态不运行任何程序需要在其中发起一个进程来启动容器需要注意的是如果创建的新容器所使用的镜像本地没有的话会自动从指定的仓库中拉取镜像。
registry.cn-beijing.aliyuncs.com/mg-docker/nginx
sha256:21dc6063fd678b478f57c0e13f47560d0ea4eeba26dfc947b2a4f81f686b9f45
17383977b9ecf4d9bac1c17893fe077bf80fb6a28281bfd7b92d65035f4b416a
sha256:2919d0172f7524b2d8df9e50066a682669e6d170ac0f6a49676d54358fe970b5
3939281048a0b0a352aedab55c12798722bd44062fe771fd88be0295f57229ac
registry.cn-beijing.aliyuncs.com/mg-docker/nginx
ps命令来查看所有运行中的容器的运行状态。
添加-a选项可以列出系统中所有的容器的状态。
情况说明输出信息显示容器的ID号、加载的镜像、运行的程序、创建时间、目前所处的状态、端口映射。
其中状态一栏为空表示当前的容器处于停止状态。
输出结果容器启动后可以看到容器状态一栏已经变为UP表示容器已经处于启动状态。
3939281048a0b0a352aedab55c12798722bd44062fe771fd88be0295f57229ac,Created:
2024-12-12T02:26:30.170696152Z,Path:
检查本地是否存在指定的镜像。
当镜像不存在时会从公有仓库下载利用镜像创建并启动一个容器分配一个文件系统给容器在只读的镜像层外面挂载一层可读写层从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中分配一个地址池中的
的程序作为docker容器是否正在运行的依据如果docker容器中
的进程挂了那么docker容器便会直接退出也就是说Docker容器中必须有一个前台进程否则认为容器已经挂掉。
例如启动一个名为centos:7的Docker容器中运行/usr/bin/bash命令并且在bash命令中执行ls
选项让Docker容器以守护形式在后台运行。
并且容器所运行的程序不能结束。
a298d9302938e72ff3c35f4ebc8c5f16659f69726e0c26fafef62ff0b044573f
64a901fb68b9661850f72464210ffa8c20dcf5b1d7a3ae421ba45eb9725e9e04
create命令创建一个容器时容器就处于这个状态。
在这个阶段容器已经被创建但还没有被启动
start命令启动一个容器时容器进入运行状态。
容器中的进程正在运行并且可以与之交互
在某些情况下你可以暂停一个正在运行的容器这样容器中的所有进程会被暂停。
容器处于暂停状态时它的状态被冻结但资源仍然被保留
restart命令重启一个容器时容器会进入重启状态。
在这个阶段容器的进程会被停止然后重新启动
当容器中的主要进程结束或者容器被手动停止时容器会进入已退出状态。
在这个阶段容器不再运行任何进程
当Docker检测到容器中的主要进程异常退出时容器会被标记为已终止状态。
这通常发生在容器内部发生严重错误或者主进程意外终止的情况下
rm命令删除一个容器时容器会被标记为已移除状态。
在这个阶段容器的所有数据和元数据都被删除不再存在于系统中
a298d9302938e72ff3c35f4ebc8c5f16659f69726e0c26fafef62ff0b044573f
命令示例用户可以通过所创建的终端来输入命令通过exit命令退出容器也可以使用Ctrl
#把宿主机的当前目录的文件file.txt传入到指定ID的容器内部
容器从一台机器迁移到另一台机器。
在迁移过程中首先需要将已经创建好的容器导出为文件可以使用docker
export命令实现无论这个容器是处于运行状态还是停止状态均可导出。
导出之后可将导出文件传输到其他机器通过相应的导入命令实现容器的迁移。
但是这种方式不推荐使用因为使用这种方法导出的镜像没有完整的构建历史。
registry.cn-beijing.aliyuncs.com/mg-docker/nginx
sha256:202622f0cb02c8703c0681a5a3028b1c6692b5a6259cc1437c9fcd7bbe467198
registry.cn-beijing.aliyuncs.com/mg-docker/nginx
如果删除一个正在运行的容器可以添加-f选项强制删除但是建议先将容器停止再做删除操作。
这样可以防止误删除正在运行的容器Docker默认的存储容量不足
580a867fb0dee93ba24c42102ead166c88a02b8328f3a3f7a737bbb9d8d89434
-f#批量强制删除第三行后且包括第三行的容器无论是否处在运行状态
0ad8fce604e500928abd4d45d8e3c7d502f699679ff150fb3eba692ac454f77e
用于控制容器重启行为的一个重要选项。
它允许用户根据不同的策略来决定容器在退出或出现故障后是否重新启动以此来确保容器所提供服务的可用性和稳定性。
含义容器总是会自动重启不管容器是因为何种原因退出。
这包括正常退出例如容器内的应用程序正常完成任务后退出和异常退出如程序崩溃、资源不足等原因导致退出。
应用场景适用于那些需要始终保持运行状态的关键服务容器比如生产环境中的
容器使用--restartalways可以确保即使因为某些突发情况如服务器的短暂网络波动、容器内
进程意外终止等导致容器停止它也能立即重新启动最大程度地减少服务中断时间。
on
含义只有当容器以非零退出码退出即容器因为错误而退出时才会重新启动。
并且可以通过max
retries参数指定容器尝试重新启动的最大次数。
如果不指定max
retries默认会无限次重新启动直到容器成功启动并保持运行状态。
应用场景用于那些在出现错误后可能通过重新启动来恢复正常运行的容器。
例如一个运行自定义数据处理应用程序的容器偶尔可能会因为数据格式异常等可恢复的错误而退出。
使用--restarton
failure可以让容器在出现这种可恢复错误后自动重启同时如果设置了合理的max
retries还可以避免容器因为频繁重启而进入无限循环在达到最大重启次数后可以方便运维人员介入检查问题。
unless
stop命令之外的任何情况下自动重启。
这意味着如果容器是因为内部程序错误、主机重启、资源耗尽等非手动停止的原因导致停止运行Docker
会自动重新启动容器。
应用场景这种策略比较灵活适用于大多数需要保持运行状态的服务容器尤其是在需要频繁对容器进行维护操作如更新、升级等的场景。
例如一个运行后端微服务的容器在正常运行过程中希望它能够自动重启以应对各种意外情况但当运维人员需要手动停止容器进行软件更新时又不希望容器自动重启干扰更新操作--restartunless
stopped就能很好地满足这种需求。
no等同于旧版本中的never
含义容器在退出后不会自动重新启动。
这适用于那些执行一次性任务的容器或者在测试场景下不希望容器自动重启而掩盖问题的情况。
应用场景例如一个用于运行数据迁移脚本的容器脚本执行完毕后容器正常退出就不需要再重新启动此时可以使用--restartno。
或者在测试一个新的容器化应用程序时为了方便观察和分析程序在退出后的状态也可以将容器设置为--restartno。
仓库注册服务器才是存放仓库具体的服务器(Registry)每个服务器上都可以放置多个仓库而每个仓库下可以放置多个镜像每个镜像上可以运行多个容器每个容器上可以跑一个应用或应用组。
官方仓库http://hub.docker.com国内仓库dockerpool.com
镜像。
这个镜像包含了应用程序及其运行所需的环境如操作系统、库文件等。
例如一个简单的
解释器、应用代码和相关的依赖库。
然后对镜像进行标记tagging标记通常包含镜像仓库地址、镜像名称和标签版本。
例如docker
若镜像仓库Registry需要认证如私有仓库开发者需要提供认证信息如用户名和密码或者令牌给
客户端。
这一过程确保只有授权的用户能够将镜像推送到仓库中。
Docker
客户端会使用提供的认证信息向镜像仓库服务器发送认证请求仓库服务器验证通过后允许客户端进行后续的推送操作。
推送镜像层Layers
镜像由多个只读的层layers组成。
在推送过程中客户端会将镜像的各个层依次发送给镜像仓库服务器。
对于每个层仓库服务器会检查是否已经存在相同的层。
如果已经存在就不需要重复存储这是基于内容哈希content
hash来判断的。
例如如果多个镜像共享相同的基础层如基于相同的
当所有的镜像层都推送完成后客户端会向仓库服务器发送镜像索引信息。
镜像索引包含了镜像的名称、标签以及各个层的哈希值等内容。
仓库服务器更新其索引记录下新推送的镜像的相关信息此时镜像就成功存储在仓库中可以供其他用户拉取使用。
客户端发出拉取特定镜像的请求。
首先客户端会向镜像仓库服务器查询目标镜像的信息包括镜像的名称、标签、层信息等。
仓库服务器根据请求的镜像名称和标签查找对应的镜像索引然后将镜像索引信息返回给客户端。
认证阶段如有需要
与推送流程类似如果是私有仓库客户端需要提供认证信息来获取拉取镜像的权限。
仓库服务器验证通过后允许客户端进行后续的拉取操作。
拉取镜像层
根据镜像索引中的层信息客户端开始从仓库服务器拉取镜像的各个层。
客户端会根据层的哈希值来确保拉取的层的准确性。
同样对于已经存在于本地的相同层客户端会自动识别不会重复拉取从而提高拉取效率并节省存储空间。
构建本地镜像
当所有需要的镜像层都拉取完成后客户端会根据镜像索引信息将这些层组合起来构建出完整的本地镜像。
构建完成后用户就可以在本地使用这个镜像来创建和运行
run命令来启动一个基于拉取的镜像的容器以运行相应的应用程序。
情况说明安装docker后可以通过官方提供的registry镜像部署一套本地的私有仓库环境
/opt/data/registry:/tmp/registry
/opt/data/registry:/tmp/registry
sha256:543dade69668e02e5768d7ea2b0aa4fae6aa7384c9a5a8dbecc2be5136079ddb
09af0b42dd3f5c072565359ab3731b727ff91e92dc551ff9ef0b9510e5303624
[IP地址:端口号]这一配置用于指定允许访问的不安全镜像仓库。
这里的10.4.7.11:5000是一个示例的镜像仓库地址它被标记为
[https://41q9iv61.mirror.aliyuncs.com,https://docker.cloudmessage.top,https://registry.docker-cn.com,https://docker.nju.edu.cn,https://registry.cn-hangzhou.aliyuncs.com,https://mirror.ccs.tencentyun.com,https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com,http://hub-mirror.c.163.com,http://f1361db2.m.daocloud.io],insecure-registries:
[https://41q9iv61.mirror.aliyuncs.com,https://docker.cloudmessage.top,https://registry.docker-cn.com,https://docker.nju.edu.cn,https://registry.cn-hangzhou.aliyuncs.com,https://mirror.ccs.tencentyun.com,https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com,http://hub-mirror.c.163.com,http://f1361db2.m.daocloud.io],insecure-registries:
情况说明首先要确保镜像有正确的标记标记格式通常是[仓库地址]/[镜像名称]:[标签]。
假设你的镜像名称是my-app-image想要推送到10.4.7.11:5000这个配置为不安全的仓库并且标签是v1可以使用以下命令进行标记
将本地的my-app-image镜像与目标仓库地址、名称和标签关联起来以便后续推送操作能够准确地将镜像发送到指定位置。
registry.cn-beijing.aliyuncs.com/mg-docker/nginx
registry.cn-beijing.aliyuncs.com/mg-docker/nginx
情况说明Docker客户端会根据配置已经将10.4.7.11:5000设置为不安全仓库跳过安全证书验证等步骤然后将镜像的各个层发送到指定的仓库地址。
仓库会检查是否已经存在相同的层通过内容哈希来判断如果没有则存储这些层最后更新镜像索引完成镜像的推送。
sha256:fa7042902b0e812e73bbee26a6918a6138ccf6d7ecf1746e1488c0bd76cf1f34
可以通过查看仓库的管理界面如果仓库有相应的管理界面或者使用仓库相关的命令行工具如果支持来验证镜像是否成功推送。
这里没有对应的管理界面所以此步骤省略。
另外在推送过程中Docker
客户端也会输出一些信息如推送的进度、每个层的状态等。
如果推送过程中出现错误客户端会显示相应的错误信息例如权限问题如果仓库需要认证但未提供正确的认证信息、网络问题或者镜像格式问题等可以根据这些错误信息来排查并解决问题。
确保你知道要拉取镜像的完整标记格式为[仓库地址]/[镜像名称]:[标签]。
例如之前推送到10.4.7.11:5000仓库的镜像标记为10.4.7.11:5000/my-app-image:v1。
由于已经在Docker配置中将10.4.7.11:5000设置为不安全的仓库在拉取镜像时Docker客户端会跳过安全证书验证等步骤。
使用docker
Docker客户端会先向10.4.7.11:5000仓库发送请求查询镜像的索引信息包括镜像的名称、标签和各层的哈希值等。
然后根据索引信息从仓库拉取镜像的各个层。
如果本地已经存在相同的层通过层的哈希值判断则不会重复拉取。
当拉取完所有需要的镜像层后Docker客户端会根据镜像索引信息将这些层组合起来构建出完整的本地镜像。
构建完成后就可以使用这个镜像来创建和运行Docker容器例如通过docker
images命令来查看本地是否已经成功拉取了镜像。
该命令会列出本地所有的Docker镜像包括镜像的仓库地址、名称、标签、大小等信息。
如果看到刚刚拉取的镜像出现在列表中就说明拉取成功。
也可以尝试使用拉取的镜像创建一个容器来验证其可用性例如
这会以交互模式-it启动一个基于拉取的镜像的容器并进入容器内部的/bin/sh命令行环境通过这种方式可以进一步检查镜像是否完整且能正常运行。
/etc/docker/daemon.jsoninsecure-registries:
sha256:fa7042902b0e812e73bbee26a6918a6138ccf6d7ecf1746e1488c0bd76cf1f34
加载本地的镜像文件到docker镜像库中来自tar归档或标准输入
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback