自从docker ,k8s兴起之后,将程序打包成镜像运行方式也是各类语言的一个趋势,也是拓展语言宽度和亲和度的综合体现,本文主要描述如何将go语言编写的程序打包成镜像,并用docker和k8s运行起来,默认服务器已经安装好了docker 和 k8s
一. 镜像制作
1. 编译go程序 生成二进制文件 (注意编译方式 go env -w CGO_ENABLED=0)
比如生成一个helloworld二进制 tufei1
2. 本地新建一个dockerfile
FROM alpine:latest
#FROM golang:alpine
COPY tufei1 /app/
#ENTRYPOINT [ "/user-srv" ]
WORKDIR /app/
#run ["pwd"]
#CMD ["./httpServer"]
ENTRYPOINT ["./tufei1"]
EXPOSE 80
3.编译dockerfile 生成镜像 (注意语句最后面的 . 号)
docker build -t test:0.0.1 .
4. 通过docker images 可以查询到生成的镜像test:0.0.1
二. docker 运行镜像
docker run -p 9112:9111 test:0.0.1
三. k8s运行镜像
当前是在test命名空间下创建的pod,如果namespace找不到,可以提前创建号test的命名空间
1. 创建pod
kubectl create -f pod.yaml
//pod.yaml可以按照这个格式书写
apiVersion: v1
kind: Pod
metadata:
name: testpod
namespace: test
labels:
app: testpod
spec:
containers:
- name: testpod
image: test:0.0.1
ports:
- containerPort: 80 --容器端口
hostPort: 80 --暴露端口
2.查询容器运行情况
kubectl get pods -n test
参考资料:
pod官网资料:https://kubernetes.io/zh/docs/concepts/workloads/pods/
docker安装参考:https://wiki.gulucat.com/doku.php/public/linux/new_install#%E4%BA%94_docker_%E7%8E%AF%E5%A2%83