Tại sao các khối không tên được tạo khi `docker-compose up` được chạy và thực hiện hai lần này sau khi phát hành` docker-compose xuống && docker-compose up`?


8

Khi bắt đầu một ứng dụng soạn thảo docker, nó tạo ra âm lượng được đặt tên lần đầu tiên và sau đó các khối lượng bổ sung mỗi khi nó được khởi động. Đây có phải là hành vi bình thường ở chỗ nó tạo ra khối lượng gia tăng hoặc tập tin docker-compose của tôi bị hỏng? Ngoài ra, sau khi chạy docker volume prune, nó đã loại bỏ hai trong số các tập không tên

Đây là đầu ra sau khi bắt đầu hai lần:

DRIVER              VOLUME NAME
local               2b33c81e6e955ff36061f4120b7181c7efc7aebded2f87eaa7290027f1e7a725
local               74301eadc75018d6f7da76aec44bcf743e03261492cfcc33211941684a570030
local               c42b1e2c17342c52b4b9e90f4d4b7fa24ccb30de5479e65cf4366e2373dfb0bf
local               dcfa63dbf99362fc92fe3b981f50abebfe1bba03063d4dd9dd790f4c058817cf
local               dockerinfluxdbgrafana_grafana-data
local               dockerinfluxdbgrafana_influxdb-data

Và để tham khảo tập tin docker-compose của tôi

version: "3"
services:
  influxdb:
    image: influxdb:latest
    container_name: influxdb
    ports:
      - "8086:8086"
    env_file:
      - 'env.influxdb'
    networks:
      - backend
    volumes:
      - influxdb-data:/var/lib/influxdb

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    env_file:
      - 'env.grafana'
      - 'secrets.grafana'
    networks:
      - backend
    volumes:
      - grafana-data:/var/lib/grafana

networks:
  backend:

volumes:
  influxdb-data:
  grafana-data:

Các bước để tái sản xuất

docker-compose up -d && docker-compose down && docker-compose up -d && docker-compose down && docker-compose up -d && docker-compose down

Vui lòng thêm đoạn 'các bước để sao chép' cho biết các lệnh nào và theo thứ tự các lệnh này đã được ban hành.
030

docker-compose up -d && docker-compose down && docker-compose up -d && docker-compose down && docker-compose up -d && docker-compose down
Moritz

Câu trả lời:


6

Nghiên cứu chỉ ra rằng khối lượng ẩn danh được tạo ra bởi influxdbgrafana/grafana.

Khối lượng ẩn danh không được đặt tên rõ ràng khi chúng được gắn vào thùng chứa lần đầu tiên, vì vậy Docker cung cấp cho chúng một tên ngẫu nhiên được đảm bảo là duy nhất trong một máy chủ Docker cụ thể. Bên cạnh tên, khối lượng được đặt tên và ẩn danh hành xử theo cùng một cách.

Các kết quả

version: "3"
services:
  influxdb:
    image: influxdb:latest
    container_name: influxdb
    ports:
      - "8086:8086"
    #env_file:
    #  - 'env.influxdb'
    networks:
      - backend
    volumes:
      - influxdb-data:/var/lib/influxdb

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    #env_file:
    #  - 'env.grafana'
    #  - 'secrets.grafana'
    networks:
      - backend
    volumes:
      - grafana-data:/var/lib/grafana

networks:
  backend:

volumes:
  influxdb-data:
  grafana-data:

kết quả trong:

DRIVER              VOLUME NAME
local               604a07040367512b09c618c6dcc71a7f55390c9c23de6ab08be7466414ed62da
local               7f4b630073b31b6e772d3edef6da81b48643525edfc34281ea13fbd6b86ec270
local               devopsstackexchange_grafana-data
local               devopsstackexchange_influxdb-data

và mọi lúc khi docker-compose downvà sau đó upđược chạy số lượng khối lượng ẩn danh tăng gấp đôi.

Điều gì sẽ xảy ra nếu nginx sẽ được kéo thay vì Influxdb và grafana?

DRIVER              VOLUME NAME
local               devopsstackexchange_grafana-data
local               devopsstackexchange_influxdb-data

và sau docker-compose down && docker-compose up -d?

DRIVER              VOLUME NAME
local               devopsstackexchange_grafana-data
local               devopsstackexchange_influxdb-data

Có vẻ như một số hình ảnh nhất định đã tạo ra khối lượng ẩn danh bổ sung. Hãy thay thế Influxdb bằng nginx và sử dụng grafana.

DRIVER              VOLUME NAME
local               15b80416ab06abb629d9f634a0feff08f7c560f31d614b9b430855c16cdb75c7
local               205a6f19cbf992c95b2e3be9f2fb1ca9ecec35fce550d0b7a4b9f32b0ef163b1
local               474108f5b7b14fba92a3e5a980f3bf851388b2ee25d7417df5c42d9f176e084b
local               5830a31a470ec8a42ddae7a37bb50487f3f36360318b2f9f5301b338507782b4
local               9f00868a2fec0cfc0d34dc12d0879d39487a13128863722f400ad4c47df2d340
local               devopsstackexchange_grafana-data
local               devopsstackexchange_influxdb-data
local               f47b1b7bbec8e50b32a7c39704c7c218165b284298d852313fa24bc7cbe6acc5

Mỗi lần soạn thảo docker được chạy lại, ba tập ẩn danh được tạo bởi grafana/grafanahình ảnh docker. Chúng ta hãy thay thế Influxdb bằng nginx và hoàn nguyên grafana thành nginx:

DRIVER              VOLUME NAME
local               devopsstackexchange_grafana-data
local               devopsstackexchange_influxdb-data

và nó vẫn còn hai nếu được khởi động lại.

Có vẻ như grafana đang gây ra vấn đề.

Tại sao ba khối ẩn danh mới được tạo mỗi khi grafana / grafana được khởi động lại?

Dockerfile grafana / grafana chỉ ra rằng ba khối ẩn danh sẽ được tạo:

VOLUME ["/var/lib/grafana", "/var/log/grafana", "/etc/grafana"]

https://docs.docker.com/engine/reference/builder/#volume

FROM ubuntu
RUN mkdir /myvol
RUN echo "hello world" > /myvol/greeting
VOLUME /myvol

Dockerfile này dẫn đến một hình ảnh gây ra việc chạy docker, để tạo một điểm gắn kết mới tại / myvol và sao chép tệp lời chào vào ổ đĩa vừa tạo.

docker volume inspect <volume name, e.g. 34cfafd4603dbc7e71a83e2520f978c8307b084143b3192de65a1995dc1d2f86> trả về dữ liệu grafana khi đường dẫn được trả về đã được kiểm tra hai trong ba tập ẩn danh:

sudo ls /var/lib/docker/volumes/a0ecd00df8fc68ef36e777c7bf9ec5a496ee30e313b86889487501a53fa2e28e/_data
grafana.ini  ldap.toml

sudo ls /var/lib/docker/volumes/34cfafd4603dbc7e71a83e2520f978c8307b084143b3192de65a1995dc1d2f86/_data
grafana.db  plugins


0

Nếu ai khác đang đi xuống lỗ thỏ này. Hãy chắc chắn rằng bạn đã không vô tình xác định âm lượng của bạn với một =trongDockerfile

Sai lầm:

VOLUME = ["/logs", "/data"]

Chính xác:

VOLUME ["/logs", "/data"]

Phải mất một thời gian dài để tìm hiểu lý do tại sao các tập ẩn danh được thêm vào bởi docker-compose

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.