우수한 소프트웨어와 실용적인 튜토리얼
알리스트Alist는 다중 저장소, 웹 브라우징, WebDAV를 지원하는 파일 목록 프로그램입니다. Gin과 SolidJS로 구동되는 네트워크 디스크 파일 관리용 오픈 소스 프로그램입니다. Alist는 로컬 저장소뿐만 아니라 Alibaba Cloud, Baidu Cloud, 123 등 다양한 네트워크 디스크도 마운트할 수 있습니다. 다음으로, docker 메서드를 사용하여 Alist를 배포하고 로컬 디렉터리를 마운트해 보겠습니다.
우리가 사용하는 버전은 aria2를 지원하는 Docker 버전이고 URL은 https://hub.docker.com/r/xhofe/alist-aria2입니다.
sudo docker run -d --restart=always -v /etc/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" xhofe/alist-aria2:latest
자동으로 완료됩니다.
처음 사용할 때는 기본 비밀번호를 쿼리하세요.
sudo docker exec -it alist ./alist admin

관리자 계정(서버 IP:5244)으로 로그인하고, 바닥글 관리를 클릭한 다음 왼쪽의 저장소, 추가, 로컬 저장소를 클릭합니다. 이 중 마운트 경로는 웹 페이지에 표시되는 경로를 의미하며, /는 루트 디렉터리에 직접 표시됩니다. 루트 폴더 경로는 파일이 서버에 실제로 저장되는 위치입니다. docker 방식을 사용하므로 이 경로는 실제로 docker에 있다는 점에 유의해야 합니다. 서버에서 이 파일에 액세스하려면 먼저 docker를 입력해야 합니다.
1. alist 컨테이너의 ID를 가져옵니다.
sudo 도커 ps
2. 컨테이너의 명령줄을 입력하세요
sudo docker exec -it 7dfc82a85888 /bin/bash

이때 컨테이너의 루트 디렉터리는 "루트 폴더 경로"의 루트 디렉터리에 해당합니다. 예를 들어, 컨테이너의 루트 디렉터리에 alist라는 새 폴더를 생성했는데, 이 폴더에는 test.txt 파일이 있습니다. 루트 폴더 경로를 "/alist"로, 마운트 경로를 "/114514"로 입력하면 서버 IP:5244에 다음 내용이 표시됩니다.

Docker 컨테이너에서 파일을 관리하는 방법
Docker 컨테이너는 가상 머신과 유사하지만, 물리적 머신과 컨테이너 내 시스템 간에 파일을 전송할 때 여전히 몇 가지 차이점이 있습니다.
컨테이너 시스템에서 로컬 파일만 관리하려는 경우 다음을 사용하세요. 도커 실행
이러한 유형의 명령은 컨테이너에 직접 전달되며 일반 명령줄을 사용하여 관리할 수 있습니다.
하지만 외부 물리적 머신에서 컨테이너로 파일을 복사하거나 컨테이너 외부로 파일을 복사해야 하는 경우가 종종 있습니다. Docker의 단점은 컨테이너가 생성된 후에는 매개변수를 수정하기가 번거롭다는 것입니다. 컨테이너를 생성할 때 이후의 모든 요구 사항을 예상하고 모든 디렉터리를 미리 매핑하는 것은 사실상 불가능합니다.
다행히 Docker 자체에서 해당 파일 전송 명령인 copy와 add 명령을 제공합니다. 이 두 명령은 사용법이 유사하지만 몇 가지 차이점이 있습니다.
이름에서 알 수 있듯이 copy 명령은 컨테이너와 외부 물리적 머신 간에 파일을 복사하는 데 사용할 수 있는 기본 명령입니다. 명령 형식은 대상에 따라 여러 조합으로 구성될 수 있습니다.
docker cp 컨테이너 ID 또는 이름: 컨테이너 디렉토리 물리적 머신 디렉토리 docker cp 물리적 머신 디렉토리 컨테이너 ID 또는 이름: 컨테이너 디렉토리
예를 들어, 컨테이너 ID가 b2860e937844인 미러가 생성됩니다.

예를 들어, 물리적 머신의 /home/lishuma 디렉토리를 컨테이너의 /home 디렉토리로 복사하려면 다음을 실행합니다.
도커 cp /home/lishuma b2860e937844:/home/
실행 후 컨테이너에 들어가서 해당 디렉토리를 보면 해당 lishuma 디렉토리를 볼 수 있습니다.

이전 명령에서 마지막 슬래시를 제거하면 물리적 머신의 /home/lishuma 디렉토리를 컨테이너의 루트 디렉토리로 복사하고 복사한 디렉토리의 이름을 home으로 바꾸는 것을 의미합니다.
그 반대로, 컨테이너 b2860e937844(test.zip 파일이 들어 있음)의 /home/lishuma 디렉터리를 물리적 머신의 /home/lishuma/test 디렉터리로 복사하려는 경우 명령 형식은 다음과 같습니다.
docker cp 컨테이너 ID 또는 이름: 컨테이너 디렉토리 물리적 머신 디렉토리
달리다:
도커 cp b2860e937844:/home/lishuma /home/lishuma/test/
실행 후, 필요한 디렉토리가 물리적 머신의 해당 디렉토리에 나타나는 것을 볼 수 있습니다.

위와 같이 컨테이너를 바깥쪽으로 복사하는 명령에서 마지막 슬래시를 제거하면 복사 후 명령 이름이 test로 변경됩니다.
메모:
- 소스 경로가 파일이고 대상 경로가 /로 끝나면 Docker는 대상 경로를 디렉토리로 처리하고 소스 파일을 해당 디렉토리에 복사합니다(디렉토리가 없으면 자동으로 생성합니다).
- 대상 파일이 기존 파일인 경우 소스 파일로 덮어쓰여지고 파일 이름은 대상 파일 이름이 됩니다.