谢谢您阅读我的帖子。
问题:
# docker ps
CONTAINER ID IMAGE COMMAND
35c8b832403a ubuntu1604:1 "sh -c /bin/sh"
# docker exec -i -t 35c8b832403a type type
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:262: starting container process caused "exec: "type": executable file not found in $PATH"
# Dockerfile
FROM ubuntu:16.04
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN apt-get update && apt-get -y upgrade
ENTRYPOINT ["sh", "-c"]
CMD ["/bin/bash"]
描述:
我的目的是以下面的方式编写Docker Exec的方式获得" type"外壳
的执行方式。Docker Exec -I -T 35C8B832403A类型类型(失败)
不
Docker Exec -I -T 35C8B832403A SH -C"类型"(传递)
我有谷歌搜索,在容器中进行一些修改(Change/etc/profile,/etc/Environment,bashrc),但失败了。
从Docker文档本身中,它有:
命令将在容器的默认目录中运行。它 基础图像具有Workdir指定的自定义目录 dockerfile中的指示将被使用。
命令应该是可执行的,链接或引用的命令将 不行。示例:docker exec -ti my_container" eCho a&& echo b"将行不通,但是Docker Exec -Ti my_container sh -c" echo a&& Echo B" Will。
,但似乎可以从docker fedora (dockerfile:fardora:25)从docker fedora 获得正确的输出时
# docker ps
CONTAINER ID IMAGE COMMAND
2a17b2338518 fedora25:1 "sh -c /bin/sh"
# docker exec -i -t 2a17b2338518 type type
type is a shell builtin
问题:
有什么办法可以在Ubuntu Docker上启用这一点?图像/容器调整?VagrantFile配置?请帮助。
其他:
使用Docker Run,由于Dockerfile中的"入口点",我能够获得正确的输出。但是,图像需要保存而不是导出。
以防万一能够按照您的期望执行类型,它将需要成为路径的一部分。正如您所说,成为壳不会有帮助,因为您不想执行/bin/bash -c 'type type'
如果要将type
作为内置壳命令执行,这意味着您需要执行shell /bin/bash
或 /bin/sh
,然后在其上执行'type type',使其成为/bin/bash -c 'type type'
毕竟,正如@henry所说,Docker Exec是将执行的完整命令,并且上面没有CMD
或ENTRYPOINT
的位置。
cmd,如果您运行docker exec
,则毫无意义。其余参数被视为命令并在已经存在的容器中执行。
也许您想使用docker run
?