docker mark

#docker中基于devicemapper中修改容器根目录10G限制为

docker run -tid --name xxx --storage-opt size=600G busybox

#k8s查看所有资源

#查询一个命名空间下的所有资源
kubectl get all -o wide -n xxx
#或者
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n tidb-admin

#查询所有命名空间下的所有资源
kubectl get all -o wide -A
#或者
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -A

#docker 安装jdk让/etc/profile.d生效

#1 将要java8.sh放到/etc/profile.d目录中
cat /etc/profile.d/java8.sh 
JAVA_HOME=/usr/local/jdk8/jdk1.8.0_341
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

#docker exec 进入容器 注意bash后面加-l
docker exec -it test1 bash -l

#对应的Dockerfile
cat Dockerfile 
FROM tinazh/debian
ADD jdk-8u341-linux-x64.tar.gz /usr/local/jdk8
COPY java8.sh /etc/profile.d/

#安装zabbix 

#默认密码: Admin zabbix

docker network create c_net --subnet=192.168.250.0/24
docker run -d  --hostname mysql  --name zabbix-mysql -t --network c_net  -e MYSQL_USER="zabbix"  -e MYSQL_DATABASE="zabbix"  -e MYSQL_PASSWORD="123456"  -e MYSQL_ROOT_PASSWORD="123456"  -e TZ=CST-8  -v /data/zabbix/mysql/data:/var/lib/mysql:rw  -v /data/zabbix/mysql/my.cnf:/etc/mysql/my.cnf  -v /data/zabbix/mysql/conf.d:/etc/mysql/conf.d  -v /data/zabbix/mysql/mysql.conf.d:/etc/mysql/mysql.conf.d  daocloud.io/library/mysql:5.7  --character-set-server=utf8 --collation-server=utf8_bin

docker run -td  --name zabbix-web --network c_net -p 8081:8080  --hostname zabbix-web  -e PHP_TZ="Asia/Shanghai"  -e DB_SERVER_HOST="zabbix-mysql"  -e MYSQL_DATABASE="zabbix"  -e MYSQL_USER="zabbix"  -e MYSQL_PASSWORD="123456"  -e MYSQL_ROOT_PASSWORD="123456"  -e TZ=CST-8 zabbix/zabbix-web-nginx-mysql:centos-5.4-latest

docker run -td  --name zabbix-server -p 10051:10051 --network c_net --hostname zabbix-server  -e DB_SERVER_HOST="zabbix-mysql"  -e MYSQL_DATABASE="zabbix"  -e MYSQL_USER="zabbix"  -e MYSQL_PASSWORD="123456"  -e MYSQL_ROOT_PASSWORD="123456"  -e ZBX_JAVAGATEWAY="zabbix-java-gateway"  -v /var/run/docker.sock:/var/run/docker.sock  -v /etc/localtime:/etc/localtime:ro  -v /data/zabbix/server/alertscripts:/usr/lib/zabbix/alertscripts  -v /data/zabbix/server/externalscripts:/usr/lib/zabbix/externalscripts  zabbix/zabbix-server-mysql:centos-5.4-latest

#init 1 容器 保证systemctl可用

docker run -itd --name debian1 --network jms_net --privileged=true tinazh/debian /sbin/init

#批量清空镜像(手工执行 未使用xargs进行自动执行)

docker images | grep "months ago" | grep 49 | awk '{print "docker rmi "$1":"$2}'

#docker desktop 中修改  /etc/kubernetes/manifests/kube-apiserver.yaml 配置文件

#直接 kubectl edit 方式是不行的 kubectl edit pods -n kube-system kube-apiserver-docker-desktop

docker run --rm -it --privileged --pid=host walkerlee/nsenter -t 1 -m -u -i -n sh

#然后
vi /etc/kubernetes/manifests/kube-apiserver.yaml

# 直接保存 apiserver会自动重启
# 其它配置文件类似

#常见缺失软件

apt install iputils-ping
apt install net-tools

apk add procps
apk add docker-cli
apk add busybox-extras 

#rancher  通过yaml方式创建服务 不能ping通故障解决

1. 创建服务与设置好对应的主机DNS

rancher kubectl create -f appserver-extend.yaml

yaml示例代码:

---
apiVersion: v1
items:
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      field.cattle.io/creatorId: user-w9lgp
      field.cattle.io/ipAddresses: "null"
      field.cattle.io/targetDnsRecordIds: "null"
      field.cattle.io/targetWorkloadIds: '["deployment:application:appserver-extend-job"]'
    labels:
      cattle.io/creator: norman
    name: service-appserver-extend-extend-job
    namespace: application
    selfLink: /api/v1/namespaces/application/services/service-appserver-extend-extend-job
  spec:
    clusterIP: None
    ports:
    - name: default
      port: 42
      protocol: TCP
      targetPort: 42
    selector:
      workloadID_service-appserver-extend-extend-job: "true"
    sessionAffinity: None
    type: ClusterIP
  status:
    loadBalancer: {}
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      deployment.kubernetes.io/revision: "1"
    generation: 1
    labels:
      cattle.io/creator: norman
      workload.user.cattle.io/workloadselector: deployment-application-appserver-extend-job
    name: appserver-extend-job
    namespace: application
    selfLink: /apis/apps/v1/namespaces/application/deployment/appserver-extend-job
  spec:
    progressDeadlineSeconds: 600
    replicas: 1
    revisionHistoryLimit: 10
    selector:
      matchLabels:
        workload.user.cattle.io/workloadselector: deployment-application-appserver-extend-job
    strategy:
      rollingUpdate:
        maxSurge: 1
        maxUnavailable: 0
      type: RollingUpdate
    template:
      metadata:
        creationTimestamp: null
        labels:
          workload.user.cattle.io/workloadselector: deployment-application-appserver-extend-job
      spec:
        containers:
        - env:
          - name: RUNPRO
            value: pro
          - name: aliyun_logs_catalina
            value: "stdout" 
          - name: aliyun_logs_access
            value: "/opt/logs/*.log"
          - name: aliyun_logs_catalina_tags
            value: "type=appserver-extend-xxx-catalina,topic=appserver-extend-xxx-extend-job-catalina"
          - name: aliyun_logs_access_tags
            value: "type=appserver-extend-xxx-access,topic=appserver-extend-xxx-extend-job-access"
          image: alpine
          imagePullPolicy: Always
          name: appserver-extend-job
          resources: {}
          securityContext:
            allowPrivilegeEscalation: false
            capabilities: {}
            privileged: false
            readOnlyRootFilesystem: false
            runAsNonRoot: false
          stdin: true
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          tty: true
        dnsPolicy: ClusterFirst
        imagePullSecrets:
        - name: registry-harbor
        restartPolicy: Always
        schedulerName: default-scheduler
        securityContext: {}
        terminationGracePeriodSeconds: 30
kind: List

故障现象:

同命名空间下 ping service-appserver-extend-extend-job 提示找不到主机。

排查过程:

rancher kubectl describe services service-appserver-extend-extend-job -n application
Name:              service-appserver-extend-extend-job
Namespace:         application
Labels:            cattle.io/creator=norman
Annotations:       field.cattle.io/creatorId: user-w9lgp
                   field.cattle.io/ipAddresses: null
                   field.cattle.io/targetDnsRecordIds: null
                   field.cattle.io/targetWorkloadIds: ["deployment:application:appserver-extend-job"]
Selector:          workloadID_service-appserver-extend-extend-job=true
Type:              ClusterIP
IP:                None
Port:              default  42/TCP
TargetPort:        42/TCP
Endpoints:         <none>      #故障点:  Endpoints 为空 
Session Affinity:  None
Events:            <none>

修复: 由于yaml文件中 先定义了service 后定义的 deployment  导致 service中找不到机器     知道原因后修复也很简单, 在yaml中先创建 deployment后, 再创建service然后就解决了。

#使用docker快速搭建各大漏洞学习平台,目前可以一键搭建12个平台

https://github.com/c0ny1/vulstudy

https://github.com/vulhub/vulhub

https://github.com/vulnspy

https://www.vsplate.com/labs.php

#at sun.awt.FontConfiguration.getVersion(FontConfiguration.java  docker  openjdk  openjdk:8-jdk-alpine 报错

原因为缺少字体

解决:添加 字体   ttf-dejavu

RUN apk add --no-cache ttf-dejavu 

//加上其它的
RUN apk add --no-cache bash tini ttf-dejavu libc6-compat linux-pam krb5 krb5-libs

#awvs  docker

docker run --name wvs13 -p 3443:3443 -itd registry.cn-shanghai.aliyuncs.com/t3st0r/acunetix_13:20200220
admin@admin.cn
Admin@admin.cn

#Could not initialize class org.xerial.snappy.Snappy

由于项目中使用了org.xerial.snappy.Snappy这个类,在正常的centos系统环境下,没有问题;在微服务容器(openjdk:8-jdk-alpine)测试的时候发现有一个功能不正常,爆出异常 Could not initialize class org.xerial.snappy.Snappy
解决方式:
由于openjdk:8-jdk-alpine容器使用的是Alpine Linux,
创建软连接
ln -s /lib /lib64

对应dockerfile为:

FROM openjdk:8-jdk-alpine
ARG RUNPRO
ENV TZ=Asia/Shanghai
RUN apk add -U tzdata
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN ln -s /lib /lib64   #新增
RUN apk add --no-cache bash tini libc6-compat linux-pam krb5 krb5-libs #新增
VOLUME /tmp
VOLUME /opt/logs
WORKDIR /opt/
COPY server-xx*.jar server-xx.jar
ENTRYPOINT ["java","-jar","server-xx.jar","--spring.profiles.active=${RUNPRO}"]

最后还是准备直接用oracle jdk了, 感觉openjdk还是不太稳定。

参考:https://www.cnblogs.com/hellxz/p/11936994.html

发表评论

邮箱地址不会被公开。 必填项已用*标注