今天在创建java镜像时,使用了(openjdk:8-jdk-alpine)[https://hub.docker.com/_/openjdk],启动容器后需要运行一java脚本,直接执行
./test.sh 报错 sh:.sh test.sh: not found

网上有说由于权限文件不能执行, chmod +x test.sh ,仍然报错

在k8s pod中部署,describe报错
Error: failed to start container “docker-registry”: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused “exec: “sh +x start-registry.sh test”: executable file not found in $PATH”: unknown

若使用 sh +x test.sh 则可运行, pod中仍然报错

直到看到stackoverflow上有同样的问题(docker alpine /bin/sh script.sh not found)[https://stackoverflow.com/questions/45860784/bin-bash-command-not-found-in-alpine-docker#],
说与shell脚本中的执行器有关,test.sh的执行器是 #!/bin/bash ,而alpine默认的是 /bin/ash, /bin/sh 没有bash,所以执行会报错

问题找到,至于bash与sh的区别,网上有不少解释
alpine中sh只是一个符号链接
sh -> /bin/busybox

将shell脚本中 #!/bin/bash 改为 /bin/sh

镜像中添加bash

FROM alpine:3.9
RUN apk update && \
    apk add --no-cache bash && \
    rm -rf /var/cache/apk/* /tmp/* /var/tmp/* $HOME/.cache
s6用作处理信号的初始化系统,以便docker stop and kill -s TERM正确关闭容器。 它不用于运行多个进程。
 ENV正确传播
stdout / stderr正确传播
    docker build -t signals .
    docker run --name signals signals
    docker stop signals
要将其用作构建映像的模板,请编辑s6/service/run以调用该命令。
                                    在path找不到可执行的文件
下面是配置环境
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command 
                                    我对使用wait-for-it使用基于Alpine Linux发行版的映像在Docker-Compose使一项服务等待另一项感兴趣.但是,如果我克隆“等待”存储库并添加以下Dockerfile,FROM alpineRUN apk --update add bashCOPY wait-for-it.sh wait-for-it.shCMD ["./wait-for-it.sh","www.goo...
                                    三、使用dockerfilealpine作为基础镜像,部署nginx。一、整理ubuntu的软件包管理命令和服务管理命令。二、整理alpine的软件包管理命令和服务管理命令。2、源代码编译安装nginx。1、apk 安装nginx。
                                    最近学习docker网络,废话不多说,直接上代码!!
错误信息 :OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: “ip”:  executable file not found in $PATH: unknown
解决方案:
①进入容器docker exec -it tomcat1 /bin/bash
②更新:apt update &&a
exec: "gcc": executable file not found in %PATH%
这是因为Windows系统上没有GCC编译器。而编译代码的包里面可能需要用到gcc编译器。
解决办法如下:
下载链接:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/
个人建议:...
                                    这是一篇手把手的教程,教你如何在制作nestjs镜像时,能够编写出一个优化生产依赖的Dockerfile
有了这个Dockerfile,无论是在本地开发环境,还是在容器环境都能很轻松完成部署
P.S 如果你想直接复制最终的Dockerfile,请直接跳到文章末尾
开始编写Dockerfile
每个镜像都可以视为一个单独的软件包,你可以通过编写Dockerfile告诉docker如何来打包镜像
让我们开始编写吧...
                                    docker安装neo4j之后,发现了一些不一样的点,所以学习一下
一、ps -ef,发现进程信息是/sbin/tini -g -- /docker-entrypoint.sh neo4j,那么tini是什么玩意儿呢
照样查了几篇文章,总结一下就是操作系统需要init进程来收割僵尸进程,而之前一般情况下,docker里都不运行init进程,只运行应用进程,应用进程是不会去收割僵尸进程的,于是会...
#update images for x86_64
#git clone https://github.com/torvalds/linux.git --depth=1 --verbose
#cd linux   #-------
#make defconfig
#cp arch/x86/configs/x86_64_defconfig .config
#modify some config option
#make -j8 bzImage
#cd ..      #-------
                                    var el = document.createElement("a");
				document.body.appendChild(el);
				el.href = "http://www.baidu.com"; //url 是你得到的连接
				el.target = '_new'; //指定在新窗口打开
				el.click();
				document.body.remove
## 下载源码
git clone https://github.com/leihongyang/flink-on-k8s-operator.git
git checkout pinnet
2. 准备镜像
从海外构建的镜像有:
FROM gcr.io/flink-operator/flink-operator:latest
FROM gcr
                                    【实例简介】Java Spring开发完整电商平台,SpringBoot框架基础打造的完整电商平台【实例截图】【核心代码】JavaSpring开发完整电商平台└── Java Spring带前后端开发完整电商平台├── Admin│ ├── Controller│ │ ├── groupon-admin-controller.iml│ │ ├── pom.xml│ │ ...