八、构建Centos基础镜像:
8.1构建自定义Centos基础镜像:
基于官方的Centos 7.2.1511镜像进行构建,需要下载Centos基础镜像,默认的版本为latest即当前的最新版本,如果要下载指定的版本则需要具体指定版本。
[root@docker-server1 ~]# docker pull centos:7.2.1511
7.2.1511: Pulling from library/centos
f2d1d709a1da: Pull complete
Digest: sha256:7c47810fd05ba380bd607a1ece3b4ad7e67f5906b1b981291987918cb22f6d4d
Status: Downloaded newer image for centos:7.2.1511
或者直接docker load -i centos7.5-docker-image.tar.gz
8.1.1:创建Dockerfile目录:
目录的创建结合业务,创建分层的业务目录。
[root@docker-server1 opt]# mkdir -pv /opt/dockerfile/system/{centos,redtar,ubuntu}
[root@docker-server1 opt]# mkdir -pv /opt/dockerfile/web/{nginx/boss/{nginx-pre,nginx -online},jdk/{jdk7,jdk6},tomcat/boss/{tomcat-pre,tomcat-online}}
8.1.2:创建Dockerfile文件:
Dockefile文件是创建docker 镜像的重要依赖文件,其中定义了镜像的各种需要安装的包、添加的文件等操作,另外要安装业务需求把需要安装的包进行安装。
[root@docker-server1 ~]# cd /opt/dockerfile/system/centos
[root@docker-server1 centos]# vim Dockerfile
#Centos Base Image
FROM centos:7.2.1511
MAINTAINER xxxxx
RUN yum clean all && yum makecache && yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
RUN yum install -y vim wget tree pcre pcre-devel gcc gcc-c++ zlib zlib-devel openssl openssl-devel net-tools iotop unzip zip iproute ntpdate nfs-utils tcpdump telnet traceroute
8.1.3:执行构建命令:
[root@docker-server1 centos]# docker build -t 192.168.10.210/images/centos7.2.1511-base .
推荐将每个镜像的构建命令写成脚本保存到当前目录,方便后期使用,如:
[root@docker-server1 centos]# cat build-command.sh
#!/bin/bash
docker build -t 192.168.10.210/images/centos7.2.1511-base .
8.2构建nginx业务镜像
8.2.1构建nginx基础镜像
编辑dockerfile脚本
#Nginx Base Image
FROM k8s-harbor1.example.com/library/centos-7.5-base:latest
ADD nginx-1.12.2.tar.gz /usr/local/src
RUN yum -y install gcc gcc-c++ autoconf automake make zlib zlib-devel openssl openssl--devel pcre pcre-devel
RUN cd /usr/local/src/nginx-1.12.2 && ./configure --prefix=/usr/local/nginx && make && make install && ln -sv /usr/local/nginx/sbin/nginx /usr/bin/
RUN useradd nginx -u 1000
ADD filebeat-6.2.4-x86_64.rpm /usr/local/src
RUN yum localinstall -y /usr/local/src/filebeat-6.2.4-x86_64.rpm
RUN rm -rf /usr/local/src/filebeat-6.2.4-x86_64.rpm
编写build-command.sh脚本
#!/bin/bash
docker build -t k8s-harbor1.example.com/library/nginx-base:v1 .
sleep 2
docker push k8s-harbor1.example.com/library/nginx-base:v1
执行build.command.sh脚本
[root@k8s-harbor1 nginx-web1]# ./build-commad.sh
Sending build context to Docker daemon 12.8kB
Step 1/9 : FROM k8s-harbor1.example.com/baseimages/nginx-base:v1
---> 56fdf1eb39d0
Step 2/9 : ADD nginx.conf /usr/local/nginx/conf/nginx.conf
---> Using cache
---> 970391583d4f
Step 3/9 : ADD webapp/* /usr/local/nginx/html/webapp/
---> Using cache
---> 210944e07001
Step 4/9 : ADD index.html /usr/local/nginx/html/index.html
---> Using cache
---> fce226452978
Step 5/9 : RUN mkdir /usr/local/nginx/html/webapp/{img,static}
---> Using cache
---> 88e4d1c4e0e3
Step 6/9 : ADD filebeat.yml /etc/filebeat/filebeat.yml
---> Using cache
---> 84b6788d980a
Step 7/9 : ADD run_nginx.sh /usr/local/nginx/sbin/run_nginx.sh
---> 18ca13a55224
Step 8/9 : EXPOSE 80 443
---> Running in d2e23f9d020c
Removing intermediate container d2e23f9d020c
---> 22e14633bd0f
Step 9/9 : CMD ["/usr/local/nginx/sbin/run_nginx.sh"]
---> Running in 610923128def
Removing intermediate container 610923128def
---> 86cdfeb93a11
Successfully built 86cdfeb93a11
Successfully tagged k8s-harbor1.example.com/library/nginx-web1:app1
The push refers to repository [k8s-harbor1.example.com/library/nginx-web1]
6386144e82d3: Pushed
b690d87ca69d: Layer already exists
d1ea132f4212: Layer already exists
f92693d12043: Layer already exists
ae302d3b4b1f: Layer already exists
6b1a44c14af0: Layer already exists
921b64e67401: Layer already exists
1a38cd873ab2: Layer already exists
03fe738cbac6: Layer already exists
bacae692bcdc: Layer already exists
0466167696d7: Layer already exists
c2c7b781c557: Layer already exists
4d7c2f02fa21: Layer already exists
a7db5a01a52d: Layer already exists
e140baabf03f: Layer already exists
bcc97fbfc9e1: Layer already exists
app1: digest: sha256:d8fadee2f5901d1cedb07ea4e425209dc3380c1d2b323d59b6b37894f991758d size: 3669
[root@k8s-harbor1 nginx-web1]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
k8s-harbor1.example.com/library/nginx-web1 app1 86cdfeb93a11 6 seconds ago 1.02GB
k8s-harbor1.example.com/baseimages/nginx-base v1 56fdf1eb39d0 3 hours ago 1.02GB
k8s-harbor1.example.com/library/nginx-base v1 56fdf1eb39d0 3 hours ago 1.02GB
centos-7.5-base latest 9a34a3cc5984 3 hours ago 773MB
k8s-harbor1.example.com/library/centos-7.5-base latest 9a34a3cc5984 3 hours ago 773MB
centos latest 49f7960eb7e4 12 months ago 200MB
centos 7.2.1511 0a2bad7da9b5 19 months ago 195MB
vmware/harbor-log v1.2.2 36ef78ae27df 19 months ago 200MB
vmware/harbor-jobservice v1.2.2 e2af366cba44 19 months ago 164MB
vmware/harbor-ui v1.2.2 39efb472c253 19 months ago 178MB
vmware/harbor-adminserver v1.2.2 c75963ec543f 19 months ago 142MB
vmware/harbor-db v1.2.2 ee7b9fa37c5d 19 months ago 329MB
vmware/nginx-photon 1.11.13 6cc5c831fc7f 19 months ago 144MB
vmware/registry 2.6.2-photon 5d9100e4350e 21 months ago 173MB
vmware/postgresql 9.6.4-photon c562762cbd12 21 months ago 225MB
vmware/clair v2.0.1-photon f04966b4af6c 23 months ago 297MB
vmware/harbor-notary-db mariadb-10.1.10 64ed814665c6 2 years ago 324MB
vmware/notary-photon signer-0.5.0 b1eda7d10640 2 years ago 156MB
vmware/notary-photon server-0.5.0 6e2646682e3c 2 years ago 157MB
photon 1.0 e6e4e4a2ba1b 2 years ago 128MB
mirrorgooglecontainers/pause-amd64 3.0 99e59f495ffa 3 years ago 747kB
k8s-harbor1.example.com/library/mirrorgooglecontainers/pause-amd64 3.0 99e59f495ffa 3 years ago 747kB
8.3构建tomcat业务镜像
8.3.1构建JDK基础业务镜像
编辑Dockerfile文件
#JDk Base Image
FROM k8s-harbor1.example.com/library/centos-7.5-base:latest
ADD jdk-8u181-linux-x64.tar.gz /usr/local/src
RUN ln -sv /usr/local/src/jdk1.8.0_181 /usr/local/jdk
ADD profile /etc/profile
ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/bin/
ENV PATH $PATH:$JAVA_HOME/bin
#date
RUN rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
编写build-commad.sh
#!/bin/bash
docker build -t k8s-harbor1.example.com/library/cnetos-jdk8-base:v1 .
sleep 2
docker push k8s-harbor1.example.com/library/cnetos-jdk8-base:v1
执行build-commad.sh
[root@k8s-harbor1 jdk-base]# ./build-commad.sh
Sending build context to Docker daemon 570.1MB
Step 1/9 : FROM k8s-harbor1.example.com/library/centos-7.5-base:latest
---> 9a34a3cc5984
Step 2/9 : ADD jdk-8u181-linux-x64.tar.gz /usr/local/src
---> a2176fec8f21
Step 3/9 : RUN ln -sv /usr/local/src/jdk1.8.0_181 /usr/local/jdk
---> Running in 77494ef7905e
'/usr/local/jdk' -> '/usr/local/src/jdk1.8.0_181'
Removing intermediate container 77494ef7905e
---> 2983233c0aba
Step 4/9 : ADD profile /etc/profile
---> 97e10360f265
Step 5/9 : ENV JAVA_HOME /usr/local/jdk
---> Running in 5110451d4766
Removing intermediate container 5110451d4766
---> 9a8b766f81ac
Step 6/9 : ENV JRE_HOME $JAVA_HOME/jre
---> Running in a0ffee7e7310
Removing intermediate container a0ffee7e7310
---> fd9c918c6f7d
Step 7/9 : ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/bin/
---> Running in d1869d5833e9
Removing intermediate container d1869d5833e9
---> aa9da8734fb3
Step 8/9 : ENV PATH $PATH:$JAVA_HOME/bin
---> Running in 864b814c3a85
Removing intermediate container 864b814c3a85
---> f1faa5ad76f8
Step 9/9 : RUN rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
---> Running in 71ee6cb835f0
Removing intermediate container 71ee6cb835f0
---> 1d2a936f9436
Successfully built 1d2a936f9436
Successfully tagged k8s-harbor1.example.com/library/cnetos-jdk8-base:v1
The push refers to repository [k8s-harbor1.example.com/library/cnetos-jdk8-base]
0fd807ed489d: Pushed
5e3efaa4d967: Pushed
a972f8312cc6: Pushed
0b5fd2bfb267: Pushed
a7db5a01a52d: Mounted from library/nginx-web2
e140baabf03f: Mounted from library/nginx-web2
bcc97fbfc9e1: Mounted from library/nginx-web2
v1: digest: sha256:a2f9d558be500db48fb8b74ac329c1d4da3314bea3e18db3301696cb9786fc09 size: 1789
8.3.2构建tomcat基础镜像
编辑Dockerfile文件
#Tomcat Base Image
FROM k8s-harbor1.example.com/library/cnetos-jdk8-base:v1
ADD apache-tomcat-8.5.34.tar.gz /opt/apps
RUN ln -sv /opt/apps/apache-tomcat-8.5.34 /opt/apps/tomcat
RUN useradd tomcat -u 2000
编写build-commad.sh
#!/bin/bash
docker build -t k8s-harbor1.example.com/library/tomcat-base:v1 .
sleep 2
docker push k8s-harbor1.example.com/library/tomcat-base:v1
执行build-commad.sh
[root@k8s-harbor1 tomcat-base]# ./build-commad.sh
Sending build context to Docker daemon 23.93MB
Step 1/4 : FROM k8s-harbor1.example.com/library/cnetos-jdk8-base:v1
---> 1d2a936f9436
Step 2/4 : ADD apache-tomcat-8.5.34.tar.gz /opt/apps
---> f6342c9044d6
Step 3/4 : RUN ln -sv /opt/apps/apache-tomcat-8.5.34 /opt/apps/tomcat
---> Running in 80035f5d8898
'/opt/apps/tomcat' -> '/opt/apps/apache-tomcat-8.5.34'
Removing intermediate container 80035f5d8898
---> b02be36e3b0d
Step 4/4 : RUN useradd tomcat -u 2000
---> Running in 4f96fca0841d
Removing intermediate container 4f96fca0841d
---> 6a7e6cf30620
Successfully built 6a7e6cf30620
Successfully tagged k8s-harbor1.example.com/library/tomcat-base:v1
The push refers to repository [k8s-harbor1.example.com/library/tomcat-base]
7e6afc84675d: Pushed
9451df4b281d: Pushed
25c476cd1fbd: Pushed
0fd807ed489d: Mounted from library/cnetos-jdk8-base
5e3efaa4d967: Mounted from library/cnetos-jdk8-base
a972f8312cc6: Mounted from library/cnetos-jdk8-base
0b5fd2bfb267: Mounted from library/cnetos-jdk8-base
a7db5a01a52d: Mounted from library/cnetos-jdk8-base
e140baabf03f: Mounted from library/cnetos-jdk8-base
bcc97fbfc9e1: Mounted from library/cnetos-jdk8-base
8.4创建tomcat的yml文件
编辑tomcat.yml文件分APP1和App2
[root@k8s-master1 tomcat]# vim tomcat.yml
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
labels:
#pod name
app: python-test-tomcat-app
#父集的deployment,删pod需要先删除deployment
name: python-test-tomcat-deployment
namespace: python1
spec:
#副本数
replicas: 1
selector:
matchLabels:
app: python-test-tomcat-app
template:
metadata:
labels:
app: python-test-tomcat-app
# Comment the following annotation if Dashboard must not be deployed on master
#annotations:
# scheduler.alpha.kubernetes.io/tolerations: |
# [
# {
# "key": "dedicated",
# "operator": "Equal",
# "value": "master",
# "effect": "NoSchedule"
# }
# ]
spec:
containers:
- name: python-test-tomcat-spec
image: k8s-harbor1.example.com/library/tomcat-app1:v1
#command: ["/apps/tomcat/bin/run_tomcat.sh"]
imagePullPolicy: IfNotPresent
#每次全会拉镜像
imagePullPolicy: Always
ports:
- containerPort: 8080
protocol: TCP
#resources:
# requests:
# memory: 4Gi
#cpu: 2
# limits:
# memory: 4Gi
#cpu: 4
#args:
# Uncomment the following line to manually specify Kubernetes API server Host
# If not specified, Dashboard will attempt to auto discover the API server and connect
# to it. Uncomment only if the default does not work.
# - --apiserver-host=http://10.20.15.209:8080
#livenessProbe:
# httpGet:
# path: /
# port: 8080
# initialDelaySeconds: 30
# timeoutSeconds: 30
---
kind: Service
apiVersion: v1
metadata:
labels:
app: python-test-tomcat-app
name: python-test-tomcat-spec
namespace: python1
spec:
type: NodePort
ports:
- port: 80
#镜像暴露的端口,与containerPort保持一致
targetPort: 8080
nodePort: 30011
selector:
app: python-test-tomcat-app
—————————————————————————————————————————————————————
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
labels:
#pod name
app: python-test-tomcat2-app
#父集的deployment,删pod需要先删除deployment
name: python-test-tomcat2-deployment
namespace: python1
spec:
#副本数
replicas: 1
selector:
matchLabels:
app: python-test-tomcat2-app
template:
metadata:
labels:
app: python-test-tomcat2-app
# Comment the following annotation if Dashboard must not be deployed on master
#annotations:
# scheduler.alpha.kubernetes.io/tolerations: |
# [
# {
# "key": "dedicated",
# "operator": "Equal",
# "value": "master",
# "effect": "NoSchedule"
# }
# ]
spec:
containers:
- name: python-test-tomcat2-spec
image: k8s-harbor1.example.com/library/tomcat-app2:v1
#command: ["/apps/tomcat2/bin/run_tomcat2.sh"]
imagePullPolicy: IfNotPresent
#每次全会拉镜像
imagePullPolicy: Always
ports:
- containerPort: 8080
protocol: TCP
#resources:
# requests:
# memory: 4Gi
#cpu: 2
# limits:
# memory: 4Gi
#cpu: 4
#args:
# Uncomment the following line to manually specify Kubernetes API server Host
# If not specified, Dashboard will attempt to auto discover the API server and connect
# to it. Uncomment only if the default does not work.
# - --apiserver-host=http://10.20.15.209:8080
#livenessProbe:
# httpGet:
# path: /
# port: 8080
# initialDelaySeconds: 30
# timeoutSeconds: 30
---
kind: Service
apiVersion: v1
metadata:
labels:
app: python-test-tomcat2-app
name: python-test-tomcat2-spec
namespace: python1
spec:
type: NodePort
ports:
- port: 80
#镜像暴露的端口,与containerPort保持一致
targetPort: 8080
nodePort: 30012
selector:
app: python-test-tomcat2-app
启动APP01和APP02
[root@k8s-master1 tomcat]# kubectl apply -f tomcat.yml
deployment.extensions/python-test-tomcat-deployment created
service/python-test-tomcat-spec created
[root@k8s-master1 tomcat]# kubectl apply -f tomcat-app02.yml
deployment.extensions/python-test-tomcat2-deployment created
service/python-test-tomcat2-spec created
[root@k8s-master1 tomcat]# kubectl get pods --all-namespaces -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
default busybox 1/1 Running 78 3d 10.2.38.4 10.170.186.216
kube-system heapster-587f6c9b46-hwljv 1/1 Running 0 3d 10.2.36.13 10.51.67.209
kube-system kube-dns-65f747f6c8-4p7gn 3/3 Running 241 5d 10.2.38.3 10.170.186.216
kube-system kubernetes-dashboard-7f4f96b579-5hxdw 1/1 Running 0 3d 10.2.36.11 10.51.67.209
kube-system kubernetes-dashboard-7f4f96b579-glqnh 1/1 Running 0 3d 10.2.38.5 10.170.186.216
kube-system monitoring-grafana-5dc657db9f-cqxjq 1/1 Running 0 3d 10.2.36.12 10.51.67.209
kube-system monitoring-influxdb-789d98f4cb-ktsl7 1/1 Running 0 3d 10.2.36.14 10.51.67.209
python1 python-test-nginx-deployment-6d9cf9fcb5-m8wch 1/1 Running 0 1d 10.2.38.6 10.170.186.216
python1 python-test-tomcat-deployment-85967b4dc9-kxdp7 1/1 Running 0 21m 10.2.36.15 10.51.67.209
python1 python-test-tomcat2-deployment-8ff58467d-zcv67 1/1 Running 0 6s 10.2.36.16 10.51.67.209
测试网络
[root@k8s-master1 tomcat]# kubectl get service -n python1
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
python-test-nginx-spec NodePort 10.1.202.247 80:30010/TCP 1d
python-test-tomcat-spec NodePort 10.1.77.89 80:30011/TCP 22m
python-test-tomcat2-spec NodePort 10.1.175.181 80:30012/TCP 1m
You have new mail in /var/spool/mail/root
[root@k8s-master1 tomcat]# kubectl get deployment -n python1
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
python-test-nginx-deployment 1 1 1 1 1d
python-test-tomcat-deployment 1 1 1 1 23m
python-test-tomcat2-deployment 1 1 1 1 2m
You have new mail in /var/spool/mail/root
[root@k8s-master1 tomcat]# kubectl exec busybox nslookup python-test-tomcat-spec.python1.svc.cluster.local
Server: 10.1.0.254
Address 1: 10.1.0.254 kube-dns.kube-system.svc.cluster.local
Name: python-test-tomcat-spec.python1.svc.cluster.local
Address 1: 10.1.77.89 python-test-tomcat-spec.python1.svc.cluster.local
You have new mail in /var/spool/mail/root
[root@k8s-master1 tomcat]# kubectl exec busybox nslookup python-test-tomcat2-spec.python1.svc.cluster.local
Server: 10.1.0.254
Address 1: 10.1.0.254 kube-dns.kube-system.svc.cluster.local
Name: python-test-tomcat2-spec.python1.svc.cluster.local
Address 1: 10.1.175.181 python-test-tomcat2-spec.python1.svc.cluster.local
[root@k8s-master1 tomcat]# kubectl exec busybox nslookup python-test-nginx-spec.python1.svc.cluster.local
Server: 10.1.0.254
Address 1: 10.1.0.254 kube-dns.kube-system.svc.cluster.local
Name: python-test-nginx-spec.python1.svc.cluster.local
Address 1: 10.1.202.247 python-test-nginx-spec.python1.svc.cluster.local
You have new mail in /var/spool/mail/root
修改nginx镜像文件,加入tomcat转发策略
[root@k8s-harbor1 nginx-web1]# vim nginx.conf
user nginx nginx;
#启动几个进程
worker_processes auto;
daemon off;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format access_json '{"@timestamp":"$time_iso8601",'
'"host":"$server_addr",'
'"clientip":"$remote_addr",'
'"size":$body_bytes_sent,'
'"responsetime":$request_time,'
'"upstreamtime":"$upstream_response_time",'
'"upstreamhost":"$upstream_addr",'
'"http_host":"$host",'
'"url":"$uri",'
'"domain":"$host",'
'"xff":"$http_x_forwarded_for",'
'"referer":"$http_referer",'
'"status":"$status"}';
access_log logs/access.log access_json;
sendfile on;
keepalive_timeout 65;
upstream tomcat_webserver{
server python-test-tomcat-spec.python1.svc.cluster.local:80;
server python-test-tomcat2-spec.python1.svc.cluster.local:80;
}
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /webapp {
root html;
index index.html index.htm;
}
location /myapp {
proxy_pass http://tomcat_webserver;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
user nginx nginx;
#启动几个进程
worker_processes auto;
daemon off;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
log_format access_json '{"@timestamp":"$time_iso8601",'
'"host":"$server_addr",'
'"clientip":"$remote_addr",'
'"size":$body_bytes_sent,'
'"responsetime":$request_time,'
'"upstreamtime":"$upstream_response_time",'
'"upstreamhost":"$upstream_addr",'
'"http_host":"$host",'
'"url":"$uri",'
'"domain":"$host",'
'"xff":"$http_x_forwarded_for",'
'"referer":"$http_referer",'
'"status":"$status"}';
access_log logs/access.log access_json;
sendfile on;
keepalive_timeout 65;
upstream tomcat_webserver{
server python-test-tomcat-spec.python1.svc.cluster.local:80;
server python-test-tomcat2-spec.python1.svc.cluster.local:80;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /webapp {
root html;
index index.html index.htm;
}
location /myapp {
proxy_pass http://tomcat_webserver;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
重新构建nginx1的docker镜像
[root@k8s-harbor1 nginx-web1]# bash build-commad.sh
Sending build context to Docker daemon 12.8kB
Step 1/9 : FROM k8s-harbor1.example.com/baseimages/nginx-base:v1
---> 56fdf1eb39d0
Step 2/9 : ADD nginx.conf /usr/local/nginx/conf/nginx.conf
---> cd340030fcd5
Step 3/9 : ADD webapp/* /usr/local/nginx/html/webapp/
---> e6971f806aca
Step 4/9 : ADD index.html /usr/local/nginx/html/index.html
---> 4948612828ca
Step 5/9 : RUN mkdir /usr/local/nginx/html/webapp/{img,static}
---> Running in 96c1417a1020
Removing intermediate container 96c1417a1020
---> d52b530129c3
Step 6/9 : ADD filebeat.yml /etc/filebeat/filebeat.yml
---> 526b54119a91
Step 7/9 : ADD run_nginx.sh /usr/local/nginx/sbin/run_nginx.sh
---> 20c2f42a29ba
Step 8/9 : EXPOSE 80 443
---> Running in db138e01d716
Removing intermediate container db138e01d716
---> e1dcf473cdea
Step 9/9 : CMD ["/usr/local/nginx/sbin/run_nginx.sh"]
---> Running in 6b7a5e889ea5
Removing intermediate container 6b7a5e889ea5
---> 71dfcfc428f6
Successfully built 71dfcfc428f6
Successfully tagged k8s-harbor1.example.com/library/nginx-web1:app1
The push refers to repository [k8s-harbor1.example.com/library/nginx-web1]
7fbb010a956a: Pushed
e05475c74a43: Pushed
bf42b15f65a9: Pushed
f98fb749ead8: Pushed
a5f4386305f5: Pushed
d7a47c031313: Pushed
921b64e67401: Layer already exists
1a38cd873ab2: Layer already exists
03fe738cbac6: Layer already exists
bacae692bcdc: Layer already exists
0466167696d7: Layer already exists
c2c7b781c557: Layer already exists
4d7c2f02fa21: Layer already exists
a7db5a01a52d: Layer already exists
e140baabf03f: Layer already exists
bcc97fbfc9e1: Layer already exists
app1: digest: sha256:7b90abaae19a00a796435fbf4d8e2497ccc6d43d3c5e64040a5314b2558d1fee size: 3669
重新创建nginx镜像
[root@k8s-master1 nginx]# kubectl delete -f nginx.yaml
deployment.extensions "python-test-nginx-deployment" deleted
service "python-test-nginx-spec" deleted
[root@k8s-master1 nginx]# vim nginx.yaml
You have new mail in /var/spool/mail/root
[root@k8s-master1 nginx]# kubectl apply -f nginx.yaml
deployment.extensions/python-test-nginx-deployment created
service/python-test-nginx-spec created
[root@k8s-master1 nginx]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default busybox 1/1 Running 196 8d
kube-system heapster-587f6c9b46-hwljv 1/1 Running 0 7d
kube-system kube-dns-65f747f6c8-4p7gn 3/3 Running 630 10d
kube-system kubernetes-dashboard-7f4f96b579-5hxdw 1/1 Running 0 8d
kube-system kubernetes-dashboard-7f4f96b579-glqnh 1/1 Running 0 8d
kube-system monitoring-grafana-5dc657db9f-cqxjq 1/1 Running 0 7d
kube-system monitoring-influxdb-789d98f4cb-ktsl7 1/1 Running 0 7d
python1 python-test-nginx-deployment-75d57f78f9-bpxwg 1/1 Running 0 5s
python1 python-test-tomcat-deployment-85967b4dc9-kxdp7 1/1 Running 0 4d
python1 python-test-tomcat2-deployment-8ff58467d-zcv67 1/1 Running 0 4d
[root@k8s-master1 nginx]#
浏览器测试检查下。