Ubuntu Dockerfile 포함)
ENTRYPOINT
을 bash -c
으로 덮어 쓰고 더 잘 작동하는지 확인해보십시오.
docker run --entrypoint /bin/bash --rm -it ubuntu:16.04 -i -c 'tput lines'
24
나는 사용자 정의 이미지를 정의하는 옵션을 선택합니다 :하지만 명령 줄에서 작동하지 않습니다
.
FROM ubuntu:16.04
ENTRYPOINT ["/bin/bash", "-c"]
결과는 비록 동일합니다
docker run --rm -it u 'tput lines'
24
그러나 이것은 "작동"
FROM ubuntu:16.04
ENTRYPOINT [ "/bin/bash" ]
으로 :
[email protected]:/c/Users/vonc/prog/testsu$ docker run --rm -it u -i -c 'ls; tput lines'
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
48
동기화 문제가있을 수 있습니다, 같은 명령이 때로는.사실
, 다음과 같은 항상 반환 "하지 (24)을"
FROM ubuntu:16.04
ENTRYPOINT [ "/bin/bash", "-l", "-i", "-c" ]
docker run --rm -it u -c 'sleep 0.1; ls; tput lines'
48
OP silgon는 in the comments 제안 :
docker run --rm -it --entrypoint /bin/bash ubuntu:16.04 -c "sleep 0.1 && tput lines"
BMitch로 의견 below :
잠의 성공을 감안할 때, 도커는 실행 명령으로 컨테이너를 회전시키고 한 번 가동하면 클라이언트가 실행중인 컨테이너에 연결됩니다. 일반적으로 밀리 초가 걸립니다. 나에게 또 다른 생각했다
: 연결된 세션 내에서
[email protected]:/c/Users/vonc/prog/testsu$
docker run --entrypoint='/bin/bash' --name ub -d -it ubuntu:16.04
0d9b8783afbb5e3ff4232da071d3f357985351ea1ce4d142bf6617ac456fb76b
[email protected]:/c/Users/vonc/prog/testsu$
d attach ub
[email protected]:/# tput lines
48
[email protected]:/# exit
exit
[email protected]:/c/Users/vonc/prog/testsu$ drmae
0d9b8783afbb5e3ff4232da071d3f357985351ea1ce4d142bf6617ac456fb76b
tput lines
잘 작동합니다. 그 이후 (시 -it
을
컨테이너가 생성
, 다음 기본값 (80x24
)로 시작하고, :
는 in the comments
thajeztah을 추가합니다 (drmae
별명에 "How to remove old and unused Docker images"참조)), 세션이 첨부됩니다.
세션이 터미널의 크기를 지정하고 있습니다.
"Resize a container TTY"API를 참조하십시오.
DEBU[0244] Calling POST /v1.25/containers/c42fd5c4eb79c06fd7f9912b8359022f7d93887afbb33b57a67ed8bb7bfee43a/resize?h=46&w=221
자세한 내용은 docker issue 25450을 참조하십시오.
이것은 issue 10341 "Container create or start should accept height/width params"과 관련 있습니다.
이 실제로 실행 스펙 (opencontainers/runtime-spec PR 563) 내에서 다시 팝업했습니다 Aleksa Sarai (cyphar)은 (2016년 9월)를 추가합니다.
기본적으로 Windows는 처음 시작할 때 콘솔 크기를 설정할 수 있어야하므로 모든 플랫폼에 콘솔 크기가 추가 될 수 있습니다. api/client/container/run.go
의 코드 밖으로
OP silgon 포인트 :
논리적 인 질문
// Telling the Windows daemon the initial size of the tty during start makes
// a far better user experience rather than relying on subsequent resizes
// to cause things to catch up.
if runtime.GOOS == "windows" {
hostConfig.ConsoleSize[0], hostConfig.ConsoleSize[1] = dockerCli.GetTtySize()
}
:
그것은, 의미뿐만 아니라 리눅스에서이 속성을 사용하여 만들 것 그 값을 사용하여 초기 콘솔 크기를 설정합니까?
Kenfe-Mickaël Laventure (mlaventure
)는에, 새로운 패치 Docker 1.13로 만들 수 있습니다.
명령이 작동하지 않습니다 (적어도 나를위한 것은 아닙니다).'docker : 데몬으로부터의 오류 응답 :/bin/bash -c : 이상한 파일이나 디렉토리'라는 오류가 발생합니다. 그러나 명령에 따라 나는'docker run --rm -it 우분투 : 16.04 bash -c "tput lines"을 사용할 수 있다고 생각 했으므로 나는 sh -c를/bin/bash -C++로 바꿨다. . 이 명령은 실행되지만 내 질문에 지정된대로 24로 출력됩니다. – silgon
@silgon 예, 지금 당장 문제를 해결하고 있습니다. – VonC
@silgon 명령의 주된 차이점은 bash 세션이라고 생각하므로 지금 당장 대답을 드리겠습니다. 그러나 사용자 지정 이미지를 사용하더라도 tput은 여전히 24를 반환합니다. – VonC