在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

最新更新