Dockerfile 基础

docker镜像构建需要至少一条FROM指令,表明从什么基础开始打架镜像,空镜像FROM scratch, scratch不是一个可拉取的镜像,相当于一个关键字。最小的linux运行系统可以FROM busybox开始搭建。

多阶段构建:一个Dockerfile可以多个From, 最后一个From生效,前面的可以AS别名,多用于构建最终运行的bin文件,COPY可以从前面的From阶段中拷贝文件。

阅读全文»

__declspec对visual studio工程的作用

visual studio的dll工程,默认不会生成配套的.lib文件,需要再头文件中定义导出的函数或类

#if defined(_WIN32)
    #if defined(__RUNTIME_DLL__)
        #define DLL_EXPORT __declspec(dllexport)
    #else
        #define DLL_EXPORT __declspec(dllimport)
    #endif
#else
    #define DLL_EXPORT
#endif

如果是cmake,在CMakeLists.txt中定义__RUNTIME_DLL__开始dll的DLL_EXPORT宏

target_compile_definitions(libtest PRIVATE __RUNTIME_DLL__)

k3s,k8s集群hello world部署

节点node

节点: 安装有k3s,k8s环境的主机或虚拟机,分为control-plane,master主控节点和<none>一般节点。每个节点已安装好容器环境(Docker等), 并且最好安装上需要image镜像, 这样可避免远程拉去image。 给每个node设置好label标签, 可方便后期规划任务的分配。

节点添加标签`sudo kubectl label node <node-name> <label-key>=<label-value>`。
节点删除标签`sudo kubectl label node <node-name> <label-key>-`, 减号表示删除。
查询节点的标签`sudo kubectl get node --show-labels`。

阅读全文»

k3s安装

k3s 安装(依赖docker方式)

k3s 是轻量化的k8s。

Master 节点安装

  • 通用地址curl -sfL https://get.k3s.io | sh -s - --docker
  • 国内加速curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - --docker

查看master的token:sudo cat /var/lib/rancher/k3s/server/node-token

Node 节点安装

  • 通用地址curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -s - --docker
  • 国内加速curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -s - --docker

在master中查看集群状态

$sudo kubectl get nodes
NAME       STATUS                     ROLES                  AGE   VERSION
u18node    Ready                      <none>                 12d   v1.21.4+k3s1
ubuntu18   Ready,SchedulingDisabled   control-plane,master   12d   v1.21.4+k3s1

tips: control-plane,master节点可设置为不参与调度(kubectl cordon ubuntu18),这样任务就不会分配过来。

阅读全文»

cocos2d-x 4.0 metal 自定义shader时渲染错误

错误信息

validateFunctionArguments:3577: failed assertion `Fragment Function(xlatMtlMain2): missing sampler binding at index 1 for _mtlsmp_u_texture1[0].'

原因是shader使用了第二张纹理,但是精灵没有设置这张纹理,

片段着色器代码如下:

uniform sampler2D u_texture1;

解决办法,无论是否用到了u_texture1,都需要设置一次。

虚拟机中运行Ubuntu18+使用交接连接网络

需要手动添加dns服务器才能解析网址:
修改/etc/netplan/00-installer-config.yaml内容如下,注意enp0s3需要修改

# This is the network config written by 'subiquity'
network:
  ethernets:
    enp0s3:
      addresses: []
      dhcp4: true
      gateway4: 192.168.0.1
      nameservers:
          addresses: [223.5.5.5, 223.6.6.6]
  version: 2

重启网络
sudo netplan apply

docker基础命令

初次启动container(容器),会从image(镜像)生成一个新的容器来启动。
container是image的实例,container中的修改在独立的空间进行,不会改动image,当然可以同步container到image。

docker run

等价于create container & docker start, 创建新容器,并启动它。

docker start

启动已存在的容器

阅读全文»

Ubuntu安装docker

官方文档 推荐使用docker自己的apt源,不使用Ubuntu自带的docker源。

Uninstall old docker versions

$ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

阅读全文»