docker提交腾讯云标准模式
创始人
2024-05-12 08:58:46
0

简介

我们公司的容器化标准模式,本次是以redis为例进行示范

技术要求:你会简单的docker容器打包

环境需要:docker、docker-compose、联网环境、腾讯云容器及镜像服务(公司已有TKE)

文件需要:除了你自己的Dockerfile所需要的东西外,还需要这4个定义规范的文件

docker本地容器打包,并且能够正常运行服务后,在进行如下操作

各文件介绍

容器有2种,一种是容器镜像,所有带image的都是镜像,另一种是容器,这2个都有namespace(命名空间),注意不要写混。我这里镜像的命名空间用的是test_env,容器的是default

注:红色标记为需要修改的

    • deploy.yaml

这个配置文件是,腾讯云上的k8s(k8s是管理docker服务的平台)配置,可修改资源大小以及名称等

apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
descheduler.alpha.kubernetes.io/evictable: 'true'
generation: 1
labels:
k8s-app: redis
qcloud-app: redis
name: redis
namespace: default
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: redis
qcloud-app: redis
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
k8s-app: redis
qcloud-app: redis
spec:
containers:
- env:
- name: TZ
value: Asia/Shanghai
- name: DEBIAN_FRONTEND
value: noninteractive
image: dengtacj.tencentcloudcr.com/test_env/redis:5.0.3
imagePullPolicy: Always
name: redis
resources:
limits:
cpu: 1000m
memory: 512Mi
requests:
cpu: 10m
memory: 50Mi
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: qcloud-docker-image
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30

可修改位置说明

  1. 含redis都是你的服务名称,namespace是你所做项目的命名空间,测试统一放在test_env下

labels:
k8s-app: redis
qcloud-app: redis
name: redis
namespace: default
  1. 含redis是你的服务名称

creationTimestamp: null
labels:
k8s-app: redis
qcloud-app: redis
...
labels:
k8s-app: redis
qcloud-app: redis
spec:

  1. redis是你的服务名称,image的是腾讯云的镜像地址(命名空间/镜像名),其他的是资源配置

image: dengtacj.tencentcloudcr.com/test_env/redis:5.0.3
imagePullPolicy: Always
name: redis
resources:
limits:
cpu: 1000m
memory: 512Mi
requests:
cpu: 10m
memory: 50Mi
    • docker-compose.yml

这个配置是,docker-compose的镜像控制配置

redis为服务名称,image为腾讯云的镜像地址(命名空间/服务名称,对应test_env/redis:5.0.3)

version: "3"
services:
redis:
image: dengtacj.tencentcloudcr.com/test_env/redis:5.0.3
container_name: redis
build:
context: ./
    • makefile.docker

这个配置是封装docker-compose的相关指令,包含服务名redis,以及腾讯云用户的config

命名空间是项目名,用于测试的统一放在test_env下

buildall:
@docker-compose build
build:
@docker-compose build redis
pushall:
@docker-compose push
push:
@docker-compose push redis
deploy:
@kubectl --kubeconfig ~/.kube/config -n default apply -f deploy.yaml
@kubectl --kubeconfig ~/.kube/config -n default apply -f service.yaml
restart:
@kubectl --kubeconfig ~/.kube/config -n default rollout restart deployment redis

.kube/config的获取方式

在基本信息中,下拉找到,查看集群凭证,进去后,点击下载

得到了这个文件

将这个文件放到 ~/.kube/目录下,并且改名为config

    • service.yaml

这个配置是,腾讯云服务配置,用于端口的暴露

apiVersion: v1
kind: Service
metadata:
labels:
k8s-app: redis
qcloud-app: redis
name: redis
namespace: default
spec:
ports:
- name: 6379-6379-tcp
port: 6379
protocol: TCP
targetPort: 6379
selector:
k8s-app: redis
qcloud-app: redis
type: ClusterIP
status:
loadBalancer: {}

建立登陆凭证,并且登陆

  • 修改 /etc/resolv.conf

注释掉之前的,加上这个

nameserver 114.114.114.114

  • 登陆腾讯云创建容器凭证

在访问凭证页面选择地域南京1,点击新建

然后点击下载,能得到一个csv

打开csv复制登陆指令,在linux执行,则登陆完毕

出现Login Succeeded代表成功

kubectl 安装

由于在部署阶段用了kubectl命令,所以必须安装kubectl

https://blog.csdn.net/cyw8998/article/details/122946959

打包命令

登陆成功后,在当前的Dockerfile下运行执行命令

构建

make -f makefile.docker build

推送到腾讯云

make -f makefile.docker push

部署到腾讯云

make -f makefile.docker deploy

重启服务

make -f makefile.docker restart

访问方式

数据库等内部容器访问方式

pod名称.命名空间:端口 只能在容器中或者容器间访问,比如我的是redis.default:6379 其他容器配置这个的地址,就可以连接

服务类修改方式

如果是服务类,如前端或者后端,则要修改服务

点击更新配置

选择主机端口访问,修改中间的主机端口,然后通过 机器ip:主机端口 访问

然后通过我们的nginx域名映射,就可以对外访问了

nginx在192.168.9.31上,配置他的config,注意不要配置错误,影响其他人的服务。

测试方法

将服务设置为主机ip:端口访问。比如我的redis,我将主机端口设置为32110

主机ip是服务实例(pod)所在节点的ip

通过redis链接测试

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...