docker - 在 docker exec 命令之间保存当前目录
问题描述
我有一个命令列表,我需要一个一个地向正在运行的 docker 容器发出这些命令。但是,当我在容器中“cd”时,它没有按预期工作。例如:
docker run -di --name example alpine:latest
for CMD in 'mkdir -p example && touch example/file' 'cd example' 'ls'
do
docker exec -w='/root' example sh -c "$CMD"
done
将打印输出example
而不是file
. 我应该如何正确执行一系列语句,但在它们执行之间保留工作目录?最好,如果可以在不连接所有命令的情况下做到这一点?
解决方案
我认为你应该使用这种格式:
dingrui@gdcni:~/onie$ docker exec -w /root example sh -c 'mkdir -p example; touch example/file; cd example; ls'
file
或者将这些命令写入脚本,然后将其挂载到容器并在容器中运行:
dingrui@gdcni:~/onie$ docker run -itd -w /root -v $(pwd):/app --name example busybox /app/test.sh
12f7f2b55182bd18c45ce31e03390544adaedc1a2dd923d3bc4293b214301650
dingrui@gdcni:~/onie$ docker logs example
file
推荐阅读
- google-apps-script - Google工作表脚本:如果列中的单元格大于“0”,则获取单元格值列表
- python - 如何有效地找到从一组不同的点到python中另一组的每个点的最近点
- javascript - 计算Javascript中按钮按下之间的经过时间
- forms - symfony 3.4将变量传递给树枝中的模态
- java - 级联持久化一个 java.util.Map
使用@ElementCollection - influxdb - 是否可以仅从 influxDb 查询中检索时间戳
- sql-server - 在运行之前验证批处理 - SET NOEXEC 仅适用于 DML 命令
- dashboard - React-Admin 如何更改菜单中的“仪表板”名称
- java - 为什么使用以下程序在 Eclipse 的控制台中没有得到任何响应?
- asp.net - ASP.NET_SessionId cookie 在特定服务器上的请求之间消失