В документе докера говорится, что docker attach
используется для подключения к работающему контейнеру (https://docs.docker.com/engine/reference/commandline/attach/ ), а docker start
используется для запуска остановленных контейнеров ( https: //docs.docker.com/engine/reference/commandline/start/).
Однако я попытался применить docker start -ai
к работающему контейнеру, и похоже, что он может успешно подключиться к работающему контейнеру. Итак, мой вопрос: «Являются ли docker start -ai
и docker attach
одинаковыми, когда они используются для подключения к работающему контейнеру?».
Смотрите код запуска докера:
Ln99: resp, errAttach := dockerCli.Client().ContainerAttach(ctx, c.ID, options)
Ln136: dockerCli.Client().ContainerStart(ctx, c.ID, startOptions)
docker start
состоит из отдельных операций attach
и start
, если контейнер уже запущен, просто пропустите эту start
операцию, но attach
там все равно работает.
Таким образом, они одинаковы в этом сценарии. Кстати, с октября 2014 года команда докеров предлагает использовать docker exec для входа в контейнер.