Подтвердить что ты не робот

Контейнер-докер не запускается (запуск докера)

Я создал контейнер со следующей командой:

docker run -d -p 52022:22 basickarl/docker-git-test

Вот команды:

[email protected]:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[email protected]:~# docker ps -a
CONTAINER ID        IMAGE                              COMMAND             CREATED             STATUS                           PORTS               NAMES
e4ac54468455        basickarl/docker-git-test:latest   "/bin/bash"         7 minutes ago       Exited (0) 26 seconds ago                            adoring_lumiere     
22d7c5d83871        basickarl/docker-git-test:latest   "/bin/bash"         2 hours ago         Exited (127) About an hour ago                       thirsty_wright      
[email protected]:~# docker attach --sig-proxy=false e4
FATA[0000] You cannot attach to a stopped container, start it first 
[email protected]:~# docker start e4
e4
[email protected]:~# docker attach --sig-proxy=false e4
FATA[0000] You cannot attach to a stopped container, start it first 
[email protected]:~# 

Не так много, чтобы сказать действительно, я ожидаю, что контейнер начнется и останется upp. Вот журналы:

[email protected]:~# docker logs e4
[email protected]:~# 
4b9b3361

Ответ 1

Вы пытаетесь запустить bash, интерактивную оболочку, для которой требуется tty. Не имеет смысла запускать это в режиме "отсоединения" с помощью -d, но вы можете сделать это, добавив -it в командную строку, которая гарантирует, что контейнер имеет действительный tty, связанный с ним, и что stdin остается подключенным:

docker run -it -d -p 52022:22 basickarl/docker-git-test

Обычно вы запускаете какой-то долгоживущий неинтерактивный процесс (например, sshd, или веб-сервер, или сервер базы данных, или диспетчер процессов, например systemd или supervisor), при запуске отсоединенного контейнеры.

Если вы пытаетесь запустить службу типа sshd, вы не можете просто запустить service ssh start. Это будет - в зависимости от распределения, которое вы используете внутри вашего контейнера, - сделайте одно из двух:

  • Он попытается связаться с диспетчером процессов, например systemd или upstart, чтобы запустить службу. Поскольку нет диспетчера служб, это не сработает.

  • Начнется sshd, но он будет запущен в фоновом режиме. Это означает, что (a) вышла команда service sshd start, что означает, что (b) Docker считает ваш контейнер неудачным, поэтому он очищает все.

Если вы хотите запустить только ssh в контейнере, рассмотрите пример типа this.

Если вы хотите запустить sshd и другие процессы внутри контейнера, вам нужно будет изучить какой-то диспетчер процессов.