Как уничтожить все внутри моих контейнеров Docker и начать новый?

(Я явно еще не полностью освоил концепции Docker, поэтому, пожалуйста, поправьте меня, когда я неправильно / неточно использую термины.)

Мне не хватало места для хранения, поэтому я запустил docker system prune, чтобы немного очистить свою систему. Однако вскоре (возможно, сразу) после этого я начал сталкиваться с ошибками сегментации после запуска сервера разработки Webpack в моем контейнере. Я предполагаю, что на данный момент это связано с тем, что какой-то пакет npm должен быть перестроен, но он не делает этого из-за некоторых старых артефактов, которые все еще существуют? Я не сталкиваюсь с ошибками сегментации, если запускаю сервер Webpack dev вне контейнера:

web_1       | [2] Project is running at http://0.0.0.0:8000/
web_1       | [2] webpack output is served from /
web_1       | [2] 404s will fallback to /index.html
web_1       | [2] Segmentation fault (core dumped)
web_1       | [2] error Command failed with exit code 139.

Таким образом, мне интересно, действительно ли docker system prune удаляет все, что связано с образами Docker, которые я запускал раньше, или я могу сделать дополнительную очистку.

Мой Dockerfile выглядит следующим образом, где ./stacks/frontend - это каталог, из которого запускается сервер Webpack dev (через yarn start):

FROM node:6-alpine
LABEL Name="Flockademic dev environment" \
      Version="0.0.0"
ENV NODE_ENV=development
WORKDIR /usr/src/app
# Needed for one of the npm dependencies (fibers, when compiling node-gyp):
RUN apk add --no-cache python make g++
COPY ["package.json", "yarn.lock", "package-lock.json*", "./"]
# Unfortunately it seems like Docker can't properly glob this at this time:
# https://stackoverflow.com/questions/35670907/docker-copy-with-file-globbing
COPY ["stacks/frontend/package.json", "stacks/frontend/yarn.lock", "stacks/frontend/package-lock*.json", "./stacks/frontend/"]
COPY ["stacks/accounts/package.json", "stacks/accounts/yarn.lock", "stacks/accounts/package-lock*.json", "./stacks/accounts/"]
COPY ["stacks/periodicals/package.json", "stacks/periodicals/yarn.lock", "stacks/periodicals/package-lock*.json", "./stacks/periodicals/"]
RUN yarn install # Also runs `yarn install` in the subdirectories
EXPOSE 3000 8000
CMD yarn start

И это его раздел в docker-compose.yml:

version: '2'

services:
  web:
    image: flockademic
    build: 
      context: .
      dockerfile: docker/web/Dockerfile
    ports:
      - 3000:3000
      - 8000:8000
    volumes:
    - .:/usr/src/app/:rw
    # Prevent locally installed node_modules from being mounted inside the container.
    # Unfortunately, this does not appear to be possible for every stack without manually enumerating them:
    - /usr/src/app/node_modules
    - /usr/src/app/stacks/frontend/node_modules
    - /usr/src/app/stacks/accounts/node_modules
    - /usr/src/app/stacks/periodicals/node_modules
    links:
      - database
    environment:
      # Some environment variables I use

Я немного расстраиваюсь из-за того, что у меня нет четкого представления о том, что происходит :) Любые предложения о том, как полностью перезапустить (и какие концепции я ошибаюсь) будут оценены.


person Vincent    schedule 20.02.2018    source источник
comment
вы можете проверить, действительно ли docker images ничего не показывает   -  person user2915097    schedule 20.02.2018
comment
Хм, это действительно все еще список изображений. Пора узнать, как их удалить, я полагаю ... Изменить: docker image prune --all, я полагаю.   -  person Vincent    schedule 20.02.2018


Ответы (1)


Очевидно, у docker system prune есть некоторые дополнительные параметры и правильный способ ядерное оружие все было docker system prune --all --volumes. Ключевым моментом для меня, вероятно, был --volumes, поскольку они, вероятно, будут содержать кешированные пакеты, которые нужно было перестроить.

Ошибка сегментации исчезла \ o /

person Vincent    schedule 20.02.2018
comment
IIRC Я могу сделать это только через два дня после публикации вопроса :) - person Vincent; 21.02.2018