Joh*_*ton 6 bash zsh docker dockerfile
我正在使用Docker动态编写文件并运行它.到目前为止命令看起来像这样(只是为了先测试这个想法):
docker run dockerfile/python cat <<EOF >hi.txt && tail hi.txt
> hi there
> EOF
Run Code Online (Sandbox Code Playgroud)
出于某种原因,这不会回应任何事情.
如果我在没有HEREDOC的情况下运行此命令,那么它会输出结果.例如,以下工作:
docker run dockerfile/python cat > hi.txt && ls
hi.txt
Run Code Online (Sandbox Code Playgroud)
如何输出多行运行命令/ HEREDOC的结果.
我正在摆弄crossbuild * 并想知道如何使用此处文档将命令通过管道传输到 Docker 容器。这是解决方案。
$ docker run --rm --interactive --volume $(pwd):/workdir --env CROSS_TRIPLE=x86_64-apple-darwin multiarch/crossbuild /bin/bash -s <<EOF
mkdir build && cd build
cmake ..
make
EOF
Run Code Online (Sandbox Code Playgroud)
快速概述正在发生的事情。
--rm告诉 Docker 在执行完成后删除容器,否则它将显示在输出中docker ps -a(当然不是强制使用)--interactive,-i是必需的,否则/bin/bash将无法在交互式环境中运行,并且不会接受来自 stdin 的此处文档作为其输入-s传递给的标志/bin/bash
如果存在 -s 选项,或者选项处理后没有剩余参数,则从标准输入读取命令。
--volume $(pwd):/workdir,只是-v将主机上的当前工作目录挂载到/workdir容器中--env CROSS_TRIPLE=x86_64-apple-darwin,或者简单地-e告诉crossbuild容器有关目标平台和架构的信息(容器的入口点是/usr/bin/crossbuild,它是一个 shell 脚本,并且基于环境变量,它将正确的工具链组件符号链接到正确的位置,以便交叉编译工作)multiarch/crossbuild要运行的 Docker 容器的名称(可在 Docker Hub 中找到)命令也可以像这样输入到 Docker。
$ cat a.sh
mkdir build && cd build
cmake ..
make
$ docker run --rm -i -v $(pwd):/workdir -e CROSS_TRIPLE=x86_64-apple-darwin multiarch/crossbuild /bin/bash -s < a.sh
Run Code Online (Sandbox Code Playgroud)
希望这有帮助。
实际上似乎你甚至不需要使用/bin/bash -s,它可以被省略,至少对于crossbuild容器来说,YMMV。
*基于 Linux 的容器用于生成多架构二进制文件:Linux、Windows 和 OS X,非常酷。
小智 3
我很好奇,您使用什么 shell 来使第二个命令起作用?因为在 bash 中,hi.txt是在主机上创建的ls, .
bash-3.2$ docker run --rm dockerfile/python cat > hi.txt && ls
Applications Desktop Documents Downloads Dropbox Library Movies Music Pictures Public VirtualBox VMs hi.txt projects
Run Code Online (Sandbox Code Playgroud)
为了实现这一点,我必须使用:
docker run --rm dockerfile/python bash -c 'cat > hi.txt && ls'
Run Code Online (Sandbox Code Playgroud)
IMO,测试东西的最简单方法就是使用容器作为沙箱:
docker run -it dockerfile/python bash
Run Code Online (Sandbox Code Playgroud)
然后就在容器的外壳中做一些事情。一旦一切运行良好,我就会向后移植我在 Dockerfile 中所做的事情。
| 归档时间: |
|
| 查看次数: |
4829 次 |
| 最近记录: |