在这篇文章中,将了解如何使 Docker
镜像用于受保护或者无法访问互联网的服务器(即 docker pull <镜像名称>
无效的机器)。
作为一个具体示例,我们将使用最新的 Nginx
镜像来执行测试。通过以下步骤,将能够在安全网络中部署 Nginx
,而无需访问互联网。此外,当需要在未来版本中升级容器的镜像版本时,可以使用相同的步骤。
有两种方法可以做到:
- 最简单的方法是使用
docker save
和docker load
- 通过设置自己的镜像存储库
我们将专注于第一个选项,因为后者有点复杂。
如果选项二更适合实际的需求,请查看 Docker 在线文档。
在撰写本文时,1.21.5
是最新的 Nginx
版本,因此我们将在示例中使用它。镜像名称由三部分组成,即:
user_account/
(注意末尾的/
);或官方Docker
镜像存储库的空字符串(并且没有/
)image_name
:tag
(注意开头的‘:’)
Nginx Docker
镜像名称具有以下语法:nginx:1.21.5
,但可以在以下示例中将其更改为实际想要的任何镜像地址,并且它的工作方式相同。
在继续所需的命令之前,假设 serverA
是可以访问 互联网的机器,serverB
是防火墙后面或者无法访问互联网的机器。
步骤很简单。在 serverA
上,获取图像并将其保存到文件中:
$ docker pull nginx:1.21.5
1.21.5: Pulling from library/nginx
a2abf6c4d29d: Pull complete
a9edb18cadd1: Pull complete
589b7251471a: Pull complete
186b1aaa4aa6: Pull complete
b4df32aa5a72: Pull complete
a0bcbecc962e: Pull complete
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:1.21.5
docker.io/library/nginx:1.21.5
$ docker save nginx:1.21.5 | gzip > ~/nginx.1.21.5.tar.gz
现在,需要做的就是将生成的 tar
文件移动到 serverB
(通过使用scp
或任何其他方式).
然后在 serverB
上执行以下命令: