Контейнер с зомби, который нельзя убить - PullRequest
0 голосов
/ 23 сентября 2018

Я использую docker-compose, чтобы создать кучу контейнеров и связать их вместе.Для некоторых определений контейнеров у меня может быть restart: always в качестве политики перезапуска.

Теперь у меня есть контейнер postgres, который возвращается к жизни в случае остановки.

$docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
a8bb2b781630        postgres:latest     "docker-entrypoint.s…"   About an hour ago   Up About an hour    5432/tcp            dcat_postgres.1.z3pyl24kiq2n4clt0ua77nfx5
docker stop a8bb2b781630
a8bb2b781630
$ docker rm -f a8bb2b781630
a8bb2b781630
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
93fa7b72c2ca        postgres:latest     "docker-entrypoint.s…"   12 seconds ago      Up 4 seconds        5432/tcp            dcat_postgres.1.oucuo5zg3y9ws3p7jvlfztflb

Использование docker-compose down в каталоге, который запустил службу, также не работает.

$ docker-compose down
Removing dcat_postgres_1 ... done
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
7ee7fb0e98cd        postgres:latest     "docker-entrypoint.s…"   13 seconds ago      Up 5 seconds        5432/tcp            dcat_postgres.1.jhv1q6vns1avakqjxdusmbb78

Как убить контейнер и не дать ему вернуться к жизни?

EDIT : контейнер перезапускается даже после перезапуска службы Docker.

Docker - 18.06.1-ce-mac73 (26764)

macOS High-Сьерра, (10.13.6)

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Я понял это.Оказывается, это было связано с роем докеров.Я экспериментировал с ним в какой-то момент, не полностью понимая, что это такое и что он делает, и, видимо, он просто оставался там.

Все, что мне нужно было сделать, это:

docker swarm leave --force

как выстрел в голову настоящему зомби.

0 голосов
/ 25 сентября 2018

Можете ли вы попробовать опцию, такую ​​как moby/moby выпуск 10032 :

docker stop $(docker ps -a -q) &
docker update --restart=no $(docker ps -a -q) &
systemctl restart docker

(здесь предполагается, что у вас есть только один работающий контейнер: тот, который вы не можете запретить запускать)

A docker rm -f должно быть достаточно, если только вы не используете docker с инструментом обеспечения, таким как Puppet .

Как оказалось, другой процесс (кроме самого Docker)) был ответственным за перезапуск контейнера (здесь docker swarm)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...