我是kubernetes的新手,希望您对以下事项有所帮助。
我使用 docker pull php 来拉取本地的httpd。
如何在本地修改此图片?
答案 0 :(得分:3)
好的,我将从基础开始:如前面的评论和答案中所述,您无法修改来自the official PHP image on Docker Hub.
的图像但是,在创建自己的图像方面,您有几个选择:
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
。
这是创建新图片的最简单方法,here you can find some good documentation.
docker commit
here. 但是,第二种方法不允许您控制图像创建过程(使用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的其他节点上提取此图像,并使用Dockerfile
或docker commit
从您要修改的基本映像或运行此映像的容器中创建新映像。创建新图像后,标记它并上传到docker hub。然后,您可以在docker hub中提取新创建的图像,以便在pods中创建一个新容器