도커 시작 시간

도커 시작 시간

속도를 어떻게 높일 수 있나요: docker rundocker exec명령?

명령을 실행하는 데는 사용자 시간 0.02초, 시스템 시간 0.02초가 소요되지만(내 경우에는 괜찮습니다) 실제 시간에는 각각 약 0.5초가 소요됩니다(허용되지 않음).

예를 들어:

$ time sudo docker run --cap-add SYS_ADMIN -i -t --memory=100000k --memory-swap=100000k -d -w /tmp -v /home/asd:/tmp my_image
187d****5037
sudo docker run --cap-add SYS_ADMIN -i -t --memory=100000k  -d -w /tmp -v    0,02s user 0,02s system 6% cpu 0,496 total

어떻게든 컨테이너 실행 프로세스의 속도를 높일 수 있습니까? 아니면 적어도 이 시간이 낭비되는 이유를 이해할 수 있습니까?

my_image에서 생성되며 ubuntu빌드된 이미지는 약 800MB를 차지합니다. 그러나 내가 확인한 바에 따르면 그다지 중요하지 않습니다. 이미지 크기를 200MB로 줄여도 위 명령의 실행 시간은 변경되지 않습니다.

답변1

오버헤드 시간은 네임스페이스를 생성하고 제거하는 데 소요될 가능성이 높습니다. 시간이 소요되는 위치를 파악하기 위해 컨테이너를 다양한 방식으로 실행할 수 있습니다.

먼저 sudo 명령을 제거하십시오. 루트로 로그인 sudo -s하고 거기에서 명령을 실행하십시오.

다음으로 실행을 별도의 생성 및 시작 단계로 분할해 보세요. 이를 통해 컨테이너 생성 또는 실행에 소요된 시간을 알 수 있습니다.

$ time docker create --cap-add SYS_ADMIN -itd \
  --memory=100000k --memory-swap=100000k \
  -w /tmp -v /home/asd:/tmp my_image

$ time docker start -ai $(docker ps -ql)

컨테이너를 분리하여 실행하므로 tty 할당을 제거할 수 있는지 여부를 고려하고 stdin 구성이 필요한 경우 다음을 제거하십시오 -it.

$ time sudo docker run --cap-add SYS_ADMIN -d \
  --memory=100000k --memory-swap=100000k \
  -w /tmp -v /home/asd:/tmp my_image

그런 다음 네트워크 및 pid와 같은 항목에 대한 각 네임스페이스를 기존 호스트 네임스페이스로 설정하여 비활성화하여 생성하는 데 얼마나 많은 시간이 추가되는지 확인할 수 있습니다.

$ time sudo docker run --cap-add SYS_ADMIN -itd \
  --net=host --pid=host --uts=host \
  --memory=100000k --memory-swap=100000k \
  -w /tmp -v /home/asd:/tmp my_image

docker에서 수행 중인 작업을 보고 docker events각 작업의 타임스탬프를 확인할 수 있습니다.

마지막으로 docker는 클라이언트/서버 애플리케이션이며 실제 시간 중 일부는 클라이언트와 서버 간의 소켓/네트워크 통신일 수 있다는 점을 명심하세요.

관련 정보