Điểm:8

Lỗi nâng cấp Docker: Trình điều khiển lưu trữ aufs không còn được hỗ trợ

lá cờ tr

Tôi có một máy Ubuntu đã cài đặt Docker.(Phiên bản Ubuntu là 20.04, nhưng điều này cũng ảnh hưởng đến 18.04 và có thể cả các phiên bản không phải LTS.) Việc nâng cấp phiên bản docker.io gói lên phiên bản hiện tại từ tiêu điểm an ninh thất bại:

Chuẩn bị giải nén .../docker.io_20.10.7-0ubuntu1~20.04.1_AMD64.deb ...
Trình điều khiển lưu trữ aufs không còn được hỗ trợ.
Vui lòng đảm bảo rằng không có thùng chứa nào của bạn
sử dụng trình điều khiển lưu trữ aufs, xóa thư mục
/var/lib/docker/aufs và thử lại.
dpkg: lỗi xử lý kho lưu trữ /var/cache/apt/archives/docker.io_20.10.7-0ubuntu1~20.04.1_amd64.deb (--unpack):
 quy trình con tập lệnh cài đặt trước gói docker.io mới trả về trạng thái thoát lỗi 1
dpkg: lỗi trong khi dọn dẹp:
 đã cài đặt gói docker.io quy trình con sau khi cài đặt tập lệnh trả về trạng thái thoát lỗi 1

Đây là một lỗi đã biết, nhưng lỗi đã được đánh dấu là không sửa được dựa trên Chính sách đóng gói Ubuntu Docker.

Trích dẫn nhiều người ở đây:

Đây là một thay đổi đột phá đối với một bản cập nhật không nên xảy ra trên phiên bản LTS.

Việc nâng cấp đòi hỏi quá nhiều can thiệp thủ công như thế này sẽ không bao giờ xảy ra trong bản phát hành LTS.

Bạn đúng về điều này trong trường hợp chung. Thật không may, Docker là một ngoại lệ. (â¦)

Vì vậy, như một ngoại lệ đối với Docker, chúng tôi cập nhật lên các bản phát hành ngược dòng mới hơn mà không quan tâm đến khả năng tương thích ngược của chính hành vi của Docker, thay vào đó hoàn toàn dựa vào các quyết định của ngược dòng. Trong trường hợp này và chỉ dựa trên phân tích đã được trình bày bởi những người khác ở đây, điều này có nghĩa là chúng tôi không mong muốn tự vá trình điều khiển lưu trữ aufs trở lại gói hàng của mình. (â¦)

Tuân theo chính sách như hiện tại, đây không phải là điều chúng tôi muốn khắc phục và do đó tôi đánh dấu lỗi này là Không khắc phục được.

Tôi thấy khó hiểu về lý do — nếu tôi đang sử dụng một bản phân phối ổn định, tôi hy vọng các bản nâng cấp sẽ diễn ra liền mạch và tôi không mong đợi có phiên bản chương trình mới nhất. Nếu tôi muốn một bản phát hành cuốn chiếu, tôi biết tìm nó ở đâu và nó sẽ không được gọi là LTS.Nhưng đây không phải là địa điểm cho cuộc thảo luận này.

Câu hỏi của tôi ở đây là, tôi phải làm gì tiếp theo? Làm cách nào để tôi đảm bảo rằng không có bộ chứa nào [của tôi] đang sử dụng trình điều khiển lưu trữ aufsâ? Giữ một phiên bản Docker cũ hơn, không rõ ràng là điều không thể bắt đầu. Tôi cần cập nhật bảo mật.

Không có vùng chứa nào của tôi sử dụng các tính năng nâng cao phụ thuộc vào trình điều khiển lưu trữ. Tôi hoàn toàn hài lòng với việc nâng cấp hoặc di chuyển các vùng chứa của mình. Làm thế nào để làm điều đó?

Artur Meinild avatar
lá cờ vn
Làm thế nào về việc cài đặt Docker từ [repos chính thức](https://docs.docker.com/engine/install/ubuntu/) thay vì phiên bản Canonicals (docker.io)? Tôi đang làm điều này và chạy phiên bản mới nhất mà không gặp vấn đề gì.
Gilles 'SO- stop being evil' avatar
lá cờ tr
@ArturMeinild Sự cố không chạy phiên bản mới nhất, nó đang nâng cấp phiên bản tôi hiện có.
Artur Meinild avatar
lá cờ vn
Nội dung của `/var/lib/docker/aufs` là gì?
Gilles 'SO- stop being evil' avatar
lá cờ tr
@ArturMeinild `diff` chứa các thư mục có tên là 64 chữ số hex (một số có hậu tố `-init`) và theo như tôi có thể biết, nội dung của chúng là các tệp được sửa đổi từ hình ảnh cơ sở. `lớp` chứa các tệp có tên tương tự có nội dung là tệp văn bản có 64 chữ số hex trên mỗi dòng. `mnt` với các thư mục trống.
Gilles 'SO- stop being evil' avatar
lá cờ tr
@ArturMeinild Trang này không hữu ích cho tôi chút nào. Nó giải thích cách hoạt động của trình điều khiển lưu trữ, nhưng tôi không quan tâm đến điều đó. Tôi cần nâng cấp hệ thống _hiện tại_ của mình. Tôi có các vùng chứa hiện đang sử dụng aufs. Làm cách nào để di chuyển chúng sang lớp phủ?
BjornW avatar
lá cờ cn
Bây giờ cũng bị trúng cái này. Bạn có thể giữ docker.io ở phiên bản cũ không? Tôi có một máy trạm với hàng chục thùng chứa không hề nhỏ để xây dựng lại và không thể lãng phí hàng giờ để làm việc đó vì nâng cấp LTS (!)... :/
Gilles 'SO- stop being evil' avatar
lá cờ tr
@BjornW Có, bạn có thể giữ gói docker. Nhưng điều đó có nghĩa là bạn đang ở với bất kỳ lỗ hổng bảo mật nào có thể được phát hiện trong phiên bản đó.
BjornW avatar
lá cờ cn
Có quản lý để giữ nó ngay bây giờ và hoàn thành việc nâng cấp các gói khác.. đôi khi thực tế cản trở và buộc bạn phải hoãn một số nâng cấp quyết liệt như thế này (rằng ít nhất IMO không bao giờ nên bị ép buộc đối với mọi người ngay từ đầu mà không có công cụ di chuyển, điều này rõ ràng là có thể thực hiện được vì những người khác đã đăng các tập lệnh có thể di chuyển các vùng chứa). Cảm ơn bạn đã trả lời và tất nhiên tôi không hướng câu nói này vào bạn :)
Gilles 'SO- stop being evil' avatar
lá cờ tr
@BjornW Nếu bạn đã tìm ra cách tự động di chuyển vùng chứa, vui lòng đăng câu trả lời tại đây!
BjornW avatar
lá cờ cn
@Gilles'SO-stop beingevil' Tôi tự hỏi liệu điều này có hiệu quả không: https://stackoverflow.com/questions/44745304/how-to-move-images-of-docker-in-aufs-directory-to-overlay2 bằng cách sử dụng docker save / tải docker
Điểm:6
lá cờ vn

Từ tài liệu Docker chính thức - cách định cấu hình trình điều khiển lưu trữ của bạn để sử dụng Lớp phủFS thay vì AUFS.

  1. Dừng Docker.

    Sudo systemctl dừng docker
    
  2. Sao chép nội dung của /var/lib/docker đến một địa điểm tạm thời.

    cp -au /var/lib/docker /var/lib/docker.bk
    
  3. Chỉnh sửa /etc/docker/daemon.json. Nếu nó chưa tồn tại, hãy tạo nó. Giả sử rằng tệp trống, hãy thêm nội dung sau.

    {
       "trình điều khiển lưu trữ": "lớp phủ2" 
    }
    

    Docker không khởi động nếu tệp daemon.json chứa JSON có định dạng sai.

  4. Khởi động Docker.

    sudo systemctl bắt đầu docker
    
  5. Xác minh rằng daemon đang sử dụng trình điều khiển lưu trữ overlay2. Sử dụng lệnh docker info và tìm kiếm Storage Driver và Backing filesystem.

    thông tin docker $
    
    Thùng chứa: 0
    Hình ảnh: 0
    Trình điều khiển lưu trữ: overlay2
     Sao lưu hệ thống tập tin: xfs
     Hỗ trợ d_type: true
     Khác biệt lớp phủ gốc: đúng
    <...>
    

Docker hiện đang sử dụng lớp phủ2 trình điều khiển lưu trữ.

Sau đó, bạn cần tạo lại vùng chứa của mình và tìm nạp lại tất cả hình ảnh với trình điều khiển lưu trữ mới tại chỗ. Dữ liệu vùng chứa được ánh xạ trong các tập sẽ không được thay đổi.

Sau này, bạn có thể xóa thư mục /var/lib/docker/aufs và tiến hành nâng cấp gói Docker.

Gilles 'SO- stop being evil' avatar
lá cờ tr
Tôi đang bối rối về “Sau đó, bạn cần tạo lại bộ chứa của mình và tìm nạp lại tất cả hình ảnh với trình điều khiển bộ nhớ mới tại chỗ. Dữ liệu vùng chứa được ánh xạ theo tập sẽ không được thay đổi.â Tôi không biết âdữ liệu vùng chứa được ánh xạ theo tập nghĩa là gì. Những gì được bảo tồn ở bước này? Tôi thấy thật kỳ lạ khi tôi tải xuống lại các hình ảnh cơ sở, những hình ảnh này không bị sửa đổi bởi sự lựa chọn của trình điều khiển lưu trữ, nhưng sẽ có các sửa đổi cục bộ, mặc dù đó là nội dung của trình điều khiển lưu trữ?
Artur Meinild avatar
lá cờ vn
Bây giờ tôi không biết thiết lập Docker hoàn chỉnh của bạn, nhưng hy vọng dữ liệu liên tục của bạn tách biệt với dữ liệu Docker. Dữ liệu thời gian chạy sử dụng trình điều khiển lưu trữ "chỉ" là dữ liệu tạm thời, mọi thứ bạn muốn duy trì lâu dài phải được ánh xạ ở nơi khác dưới dạng ổ đĩa (đường dẫn được đặt tên hoặc trực tiếp). Tôi giả định điều này, bởi vì nếu không phải như vậy, việc di chuyển vùng chứa của bạn sẽ rất khó khăn.
Artur Meinild avatar
lá cờ vn
Hãy coi đây là việc tạo tất cả các vùng chứa của bạn từ đầu, nhưng với dữ liệu cố định tại chỗ.
lá cờ in
Trình điều khiển aufs đã bị xóa hoàn toàn khỏi bản nâng cấp LTS docker.io chưa? .. hoặc tôi có thể tạm thời đặt phần phụ trợ lưu trữ thành "overlay2" và nâng cấp và chỉ cần quay lại không?
lá cờ in
Tôi đã xem một số hướng dẫn sao lưu/khôi phục hình ảnh và sao lưu/khôi phục vùng chứa và hoàn toàn không có hướng dẫn nào giải thích cách khôi phục vùng chứa của bạn theo cách của chúng để bạn có thể tiếp tục ở nơi bạn đã dừng lại..
Mave avatar
lá cờ id
@Brunis Bạn đã bao giờ tìm thấy câu trả lời chưa? Tôi vừa mất tất cả hình ảnh và vùng chứa của mình :|
lá cờ in
@Mave tôi đã chuyển mọi thứ sang docker-compose.Tôi đã mất vài ngày cho đến khi tôi có thể tạo lại các thùng chứa của mình và hình ảnh pssql được ánh xạ chính xác tới hệ thống tệp chứa các tệp db của tôi. Thật là một cơn ác mộng. Không đợi LTS ra mắt nữa, chả có đường nâng cấp nào từ LTS -> LTS cả..
Điểm:0
lá cờ in

Xin lưu ý rằng nếu đáng lẽ bạn nên di chuyển thư mục dữ liệu sang một vị trí khác (ví dụ: qua "gốc dữ liệu" tùy chọn trong daemon.json) bạn cần xóa cả hai thư mục aufs, thư mục bên dưới thư mục mới gốc dữ liệu và cái dưới /var/lib/docker trước khi tiến hành cài đặt gói

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.