mirror of
https://github.com/weaveworks/scope.git
synced 2026-05-06 01:08:03 +00:00
Merge pull request #2781 from weaveworks/2550-non-login-container-shell
run a normal (rather than login) shell in containers
This commit is contained in:
@@ -8,16 +8,19 @@ start_suite "Test container controls"
|
||||
weave_on "$HOST1" launch
|
||||
scope_on "$HOST1" launch
|
||||
|
||||
CID=$(weave_proxy_on "$HOST1" run -dti --name alpine alpine /bin/sh)
|
||||
CID=$(weave_proxy_on "$HOST1" run -dti --name alpine -e PATH=/home:/usr/bin alpine /bin/sh)
|
||||
|
||||
wait_for_containers "$HOST1" 60 alpine
|
||||
|
||||
assert "docker_on $HOST1 inspect --format='{{.State.Running}}' alpine" "true"
|
||||
PROBEID=$(docker_on "$HOST1" logs weavescope 2>&1 | grep "probe starting" | sed -n 's/^.*ID \([0-9a-f]*\)$/\1/p')
|
||||
|
||||
# Execute 'echo foo' in a container tty and check its output
|
||||
# Execute 'echo $PATH' in a container tty and check its output - as
|
||||
# well as checking basic operation, this also checks that the
|
||||
# container's PATH settings are respected, which isn't the case for
|
||||
# login shells.
|
||||
PIPEID=$(curl -s -f -X POST "http://$HOST1:4040/api/control/$PROBEID/$CID;<container>/docker_exec_container" | jq -r '.pipe')
|
||||
assert "(sleep 1 && echo 'echo foo' && sleep 1) | wscat -b 'ws://$HOST1:4040/api/pipe/$PIPEID' | col -pb" "alpine:/# 6necho foo\nfoo\nalpine:/# 6n"
|
||||
assert "(sleep 1 && echo 'echo \$PATH' && sleep 1) | wscat -b 'ws://$HOST1:4040/api/pipe/$PIPEID' | col -pb" "/ # 6necho \$PATH\n/home:/usr/bin\n/ # 6n"
|
||||
|
||||
assert_raises "curl -f -X POST 'http://$HOST1:4040/api/control/$PROBEID/$CID;<container>/docker_stop_container'"
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ func (r *registry) execContainer(containerID string, req xfer.Request) xfer.Resp
|
||||
AttachStdout: true,
|
||||
AttachStderr: true,
|
||||
Tty: true,
|
||||
Cmd: []string{"/bin/sh", "-l", "-c", "TERM=xterm exec $( (type getent > /dev/null 2>&1 && getent passwd root | cut -d: -f7 2>/dev/null) || echo /bin/sh)"},
|
||||
Cmd: []string{"/bin/sh", "-c", "TERM=xterm exec $( (type getent > /dev/null 2>&1 && getent passwd root | cut -d: -f7 2>/dev/null) || echo /bin/sh)"},
|
||||
Container: containerID,
|
||||
})
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user