#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