之前写了 制作php+nginx环境镜像制作了一个php镜像。
那么如何使用这个镜像呢?
docker run --rm -d --name php -p 80:80 -v /tmp:/app
docker命令解释:
–rm : 防止docker产生tag为 none的的镜像
-d : 使得产生的container在后台运行
–name : 指定该container 名称为php ,方便之后操作
-p :指定端口 第一个80为宿主机的端口号,第二个80为container的端口号
第一个端口号可以是你的宿主机的任何可用端口,可以用localhost:端口号进行访问。
-v : v是volume的缩写,即将宿主机的卷挂载到container中
第一个/tmp指的是宿主机中的path路径
第二个/app是container的path路径
由于基础镜像webdevops/php-nginx:centos-7-php56中配置的nginx root路径为/app,所以此处指定为/app
在/tmp中添加文件index.php
内容为:
phpinfo() ?>
启动容器后即可访问宿主机地址+端口号,如curl localhost:端口号,即会返回phpinfo的内容
在webdevops/php-nginx镜像文档中即可看到配置文件的路径
此处生效的nginx配置文件路径是:/opt/docker/etc/nginx/vhost.conf
在该配置文件中可以看到监听80端口的配置root路径为/app
可以修改该路径
将镜像上传至仓库中
docker push image_name
新建deployment 配置文件:php-deployment.yaml
deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: php
spec:
replicas: 1
template:
metadata:
labels:
app: php
spec:
containers:
- name: php
image: image_address
ports:
- containerPort: 80
volumeMounts:
- mountPath: /app
name: php-volume
volumes:
- name: php-volume
hostPath:
path: /tmp
新建 php-service.yaml文件
kind: Service
apiVersion: v1
metadata:
name: php-service
namespace: default
labels:
app: php
spec:
ports:
- name: listener
protocol: TCP
port: 80
targetPort: 80
selector:
app: php
type: LoadBalancer
externalIPs:
- your ip address
执行命令:
kubectl apply -f php-deployment.yaml
kubectl apply -f php-service.yaml
可通过 以下命令查看
kubectl get deployment
kubectl get service
之后可以通过访问你的宿主机ip来获得phpinfo
当然你的k8s集群中运行php容器节点的/tmp路径下需要有index.php这个文件
至于是哪个节点运行了这个容器可以通过 kubecel get pods php来查看