编辑从docker hub

时间:2017-09-10 06:50:20

标签: kubernetes

我是kubernetes的新手,希望您对以下事项有所帮助。

我使用 docker pull php 来拉取本地的httpd。

如何在本地修改此图片?

2 个答案:

答案 0 :(得分:3)

好的,我将从基础开始:如前面的评论和答案中所述,您无法修改来自the official PHP image on Docker Hub.

的图像

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

  1. 从您刚刚提取的PHH基础映像开始,使用Dockerfile创建您自己的映像(app文件夹包含您的应用程序)
  2. 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

    这是创建新图片的最简单方法,here you can find some good documentation.

    1. 您可以运行容器,进行一些更改(添加文件,编辑配置和其他内容),然后将这些更改提交到新图像中。你可以find some examples on docker commit here.
    2.   

      但是,第二种方法不允许您控制图像创建过程(使用Dockerfile的方式)。

      创建映像后,为了将映像部署到另一个节点(用于创建映像的节点除外),您需要将映像推送到映像存储库(Docker Hub或其他一些私有映像注册表 - AWS,GCP和Azure都有私有映像注册表。 使用Docker CLI的默认设置是Docker Hub。 Here you can find a tutorial on tagging and pushing your image to Docker Hub

      现在您已在Docker Hub(或其他私有映像注册表)上拥有映像,您已准备好将其部署在Kubernetes集群上。

      你可以run it in a very similar manner to the one you ran it using Docker

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

      然后,为了从群集外部访问它,您需要expose the deployment来创建服务(现在取决于您的群集在哪里 - 云/本地,您可以从中获取公共IP)云提供商或使用节点端口):

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

      下一步将是create YAML files for your deployments和服务。

      希望这有帮助!

答案 1 :(得分:0)

您无法修改用于在pod中构建容器的图像。但是,您可以在运行docker的其他节点上提取此图像,并使用Dockerfiledocker commit从您要修改的基本映像或运行此映像的容器中创建新映像。创建新图像后,标记它并上传到docker hub。然后,您可以在docker hub中提取新创建的图像,以便在pods中创建一个新容器