构建nginx镜像,部署到k8s
创建dockerfile(Dockerfile-web),通过dockerfile构建nginx镜像
FROM nginx:stable-alpine
COPY nginx.conf /etc/nginx/nginx.conf
ADD dist.tar.gz /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
dockerfile是一个描述如何构造和启动镜像的文件,像上面这个
1.我们从 nginx:stable-alpine 拉取镜像作为基座,nginx版本是,1.22.1;
2.拷贝当前目录下的nginx.conf 到 镜像里面的/etc/nginx/nginx.conf,其实就是替换,nginx的配置
3.把当前目录下的dist.tar.gz的压缩文件,解压到镜像的/usr/share/nginx/html/
ps: 压缩命令:cd 到dist目录执行 tar -zcvf dist.tar.gz ./
4.声明该镜像服务跟外界通讯的端口是80
5.启动程序在后台执行
下面的操作都是在安装有docker的服务器运行
执行命令构建镜像
docker build -t myNginx:v1 . -f ./Dockerfile-web
查看镜像
docker images
使用镜像myNginx:v1创建容器myNginxV1实例,并映射宿主85端口到容器的80端口
docker run -d -p 85:80 --name myNginxV1 myNginx:v1 ## 使用新镜像创建容器
启动容器
docker start myNginxV1
查看容器状态
docker ps
停止容器
docker stop myNginxV1
删除容器
docker rm myNginxV1
进入容器
docker exec -it myNginxV1 /bin/sh
ps:进入容器要看容器的基座是基于什么方式进行交互,有的是/bin/bash有的是/bin/sh
退出容器
请按Ctrl+P+Q进行退出容器
部署到k8s
1.如果有部署自己公共的镜像服务器管理平台,如Harbor,则将上述创建好的镜像文件push到管理平台,执行
docker tag myNginx:v1 xxx.xxx.xxx.xxx/myNginx:v1
docker push xxx.xxx.xxx.xxx/myNginx:v1
2.编写yaml文件(myNginx.yaml)
apiVersion: apps/v1
kind: Deployment
metadata:name: myNginxlabels:name: myNginx
spec:replicas: 3 # 启动3个容器实例selector:matchLabels:app: myNginxtemplate:metadata:labels:app: myNginxspec:containers:- name: moanginximage: xxx.xxx.xxx.xxx/myNginx:v1imagePullPolicy: Always # 始终拉取ports:- containerPort: 80 # 容器对外端口---apiVersion: v1
kind: Service
metadata:name: myNginxlabels:app: myNginx
spec:type: NodePortports:- port: 80 # 容器端口targetPort: 80 # 容器端口nodePort: 30005 # 对外服务端口selector:app: myNginx
这个yaml文件是告诉k8s如何部署镜像,服务。
ps:yaml的语法,跟json差不多,少了{},层级靠空格区分(空格个数不限制,相同空格数的在同一级),“-”表示父元素是个数组,这是一个数组项;“---”表示另外要一个yaml文件,不想分多个文件想在一个文件里面描述的就使用---隔开
上面yaml定义2个类型的Deployment,Service的对象,Deployment简单理解管理容器的一套程序,配置这个类型,告诉k8s,容器从哪里拉镜像,启动多少容器实例等等;Service简单理解容器运行后从集群角度对外怎样提供服务,通过配置对外服务是30005端口,外部的程序就可以通过30005端口进入集群访问容器提供的服务,负载均衡啥的应该就都是Service内部自己调度
下面的命令需要在部署了k8s的服务器上运行
执行部署命令
kubectl apply -f myNginx.yaml
执行后,如果没有什么问题,通过 kubectl get pods 可以看到3个myNginx的实例在运行,再通过http://xxx.xxx.xxx.xxx:30005,在浏览器就可以访问容器内nginx提供的web内容
停掉这个部署可以使用下面命令
kubectl delete -f myNginx.yaml
执行后,再用kubectl get pods,可以看到myNginx会逐步停掉至消失
构建nginx镜像,部署到k8s相关推荐
- dockerfile以alpine为基础镜像构建nginx镜像
dockerfile以alpine为基础镜像构建nginx镜像 文章目录 dockerfile以alpine为基础镜像构建nginx镜像 1:alpine 2:alpine软件包管理命令 apk ad ...
- Dockerfile构建nginx镜像
Dockerfile构建nginx镜像[root@bogon ~]# mkdir /opt/docker-file [root@bogon ~]# cd /opt/docker-file/ [root ...
- Dockerfile构建Nginx镜像、镜像优化(多阶段构建,最小化镜像构建)
Dockerfile创建镜像 Dockerfile 有以下指令选项: FROM MAINTAINER RUN CMD EXPOSE ENV ADD COPY ENTRYPOINT VOLUME USE ...
- 75-CentOS-Docker构建nginx镜像
准备一台CentOS7-1908虚拟机虚拟机中没有docker下载源 [root@C7-Docker ~]# wget -O /etc/yum.repos.d/docker-ce.repo https ...
- docker 构建tomcat镜像部署war包
docker 构建tomcat容器部署war包 拉取tomcat镜像 docker pull tomcat:8.5-alpine 查看镜像 docker images 构建并启动容器 docker r ...
- 利用docker中的nginx镜像部署angular项目
1.进入angular项目下的src文件加下:在命令行中执行:ng build --prod --aot 2.将生成的dist文件,通过Xftp传到服务器中 3.修改权限 4.进入到dist文件夹下的 ...
- 使用Dockerfile构建Nginx,Tomcat,MySQL镜像
实验环境说明 本机IP地址:192.168.10.157 构建mysql镜像时,验证的主机IP:192.168.10.149 构建Nginx镜像 1.下载基础镜像--centos镜像 docker p ...
- dockerfile构建nginx并结合php
查看nginx和php的目录结构: [root@docker docker_demo]# tree nginx nginx ├── Dockerfile ├── fastcgi_params ├── ...
- 基于nerdctl + buildkitd构建容器镜像,运行tomcat后端服务和nginx前端服务
目录 简介: 一.部署buildkitd 1.下载二进制包 2. 解压二进制包,并移到全局变量中 3.创建socket文件,service文件 4.启动服务 二.使用nerdctl命令测试镜像构建 1 ...
最新文章
- 宏基因组扩增子2分析流程:中文首发,史上最详系,零基础自学
- les物流执行系统_物流规划工作如何开展?
- vscode跳转到指定行快捷键
- GDCM:gdcm::Command的测试程序
- javascript 忍者秘籍读书笔记
- PMP之项目资源管理---激励理论
- 关于java中next,nextInt,nextLine的区别
- 小文件复制为什么那么慢_为什么最近手机网速那么慢?原因是……
- 深入理解typedef
- C++标准转换运算符:dynamic_cast
- 博弈论 斯坦福game theory stanford week 2.1_
- ad转3d视图快捷键_AD详细快捷键按键
- python中的常数e的实现
- 什么耳机对而伤害最小,传闻不伤耳的骨传导耳机是真的吗?
- 邮件营销群发6大技巧!怎么群发邮件效果好?
- 数据可视化神器,精彩的地图可视化展示
- 扫描器s-scan下载安装功能应用
- 北京做系统的公司有哪些服务器,北京服务器工控机排名
- 聚焦:中国八大城市娶老婆的成本
- CSS3 媒体查询(media)与 Viewport