编辑从 docker hub 拉取的 kubertes docker 镜像

noo*_*oob 2 kubernetes

我对 kubernetes 非常陌生,希望您就以下问题提供帮助。

我已经使用docker pull php在本地拉取 httpd。

如何在本地修改此图像?

rad*_*tei 5

好的,我将从基础知识开始:正如之前的评论和答案中所述,您无法修改来自Docker Hub 上的官方 PHP 镜像的镜像。

但是,在创建自己的图像时,您有几个选择:

  1. 从您刚刚拉取的 PHH 基础映像开始,并使用 Dockerfile 创建您自己的映像(其中app文件夹包含您的应用程序)

FROM php:7.1.9-apache COPY app /var/www/html EXPOSE 80

然后,您只需docker build -t my-php-app .在本地运行它即可docker run -p <some-port>:80 my-php-app

这是创建新映像的最简单方法,在这里您可以找到一些很好的文档。

  1. 您可以运行容器,进行一些更改(添加文件、编辑配置和其他内容),然后将这些更改提交到新映像中。您可以在这里找到一些示例docker commit

但是,第二种方法不允许您对映像创建过程进行源控制(就像使用 Dockerfile 那样)。

创建映像后,为了将其部署到另一个节点(除了用于创建它的节点),您需要将映像推送到映像存储库(Docker Hub 或其他一些私有映像注册表 - AWS、GCP)和 Azure 都有私有映像注册表)。使用 Docker CLI 的默认选项是 Docker Hub。在这里您可以找到有关标记图像并将其推送到 Docker Hub 的教程

现在您已将映像存储在 Docker Hub(或其他私有映像注册表)上,您就可以将其部署到 Kubernetes 集群上了。

您可以以与使用 Docker 运行它的方式非常相似的方式运行它

kubectl run --image=<docker-hub-username>/<your-image> your-app-name --port=<port inside container>

然后,为了从集群外部访问它,您需要公开将创建服务的部署(现在取决于您的集群所在的位置 - 云/本地,您可以从云提供商处获取公共 IP 或使用节点端口):

kubectl expose deployment your-app-name --port=80 --name=your-app-service

下一步是为您的部署和服务创建 YAML 文件

希望这可以帮助!