运行docker映像时出错。看来问题出在我的电脑上。
我正在使用MacOS 10.13.6。 我已按照步骤创建docker映像。
Sanjeet:server-api sanjeet$ docker build -t apicontainer .
Sending build context to Docker daemon 24.01MB
Step 1/2 : FROM alpine:3.6
---> da579b235e92
Step 2/2 : CMD ["/bin/bash"]
---> Running in f43fa95302d4
Removing intermediate container f43fa95302d4
---> 64d0b47af4df
Successfully built 64d0b47af4df
Successfully tagged apicontainer:latest
Sanjeet:server-api sanjeet$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
apicontainer latest 64d0b47af4df 3 minutes ago 4.03MB
alpine 3.6 da579b235e92 2 weeks ago 4.03MB
Sanjeet:server-api sanjeet$ docker run -it apicontainer
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory": unknown.
Sanjeet:server-api sanjeet$ ERRO[0001] error waiting for container: context canceled
在 Dockerfile
内部FROM alpine:3.6
CMD ["/bin/bash"]
答案 0 :(得分:6)
alpine
默认不包含bash
。
如果要包含bash
,则应在Dockerfile中添加RUN apk add --no-cache bash
。
答案 1 :(得分:1)
运行/重新初始化Docker时出现的问题
ERRO [0000]等待容器错误:上下文已取消
强制停止正在运行的Docker容器的步骤
docker ps
//copy the CONTAINER ID of the running process, ex: CONTAINER ID: 37146513b713
docker kill 37146513b713
docker rm 37146513b713
答案 2 :(得分:0)
alpine
不提供glibc
。 alpine
之所以小,是因为它使用了简化的libstdc版本musl.libc.org。
因此,我们将使用ldd
命令检查静态链接的依赖项。
$ docker run -it <image name> /bin/sh
$ cd /go/bin
$ ldd scratch
检查链接的静态文件,该文件在该版本的alpine中是否存在?从二进制文件的角度来看,如果没有找到该文件,它将无法报告文件,并将报告File not found
。
以下步骤取决于缺少的二进制文件,您可以在Internet上查找如何安装它们。
将RUN apk add --no-cache libc6-compat
添加到您的Dockerfile中,以在一些libstdc
基于高山映像的Dockerfile中添加Golang
。
在这种情况下,解决方案之一是
CGO_ENABLED=0
RUN apk add --no-cache libc6-compat
到您的Dockerfile
golang:alpine