클라우드 스토리지: Nextcloud

June 22, 2020
    본문은 아래의 설치 환경을 바탕으로 작성되었으며, 다른 환경에서는 다른 결과가 나타날 수 있습니다.
    
    · Ubuntu Server: 20.04 LTS Legacy Server
    · Ubuntu Repository: us.archive.ubuntu.com
    · Docker Repository: download.docker.com
    · docker-ce: 19.03.11
    · docker-compose: 1.26.0
    · Nextcloud: 19.0.0 Official image on Docker Hub
    

    Nextcloud

    우분투 서버에 설치할 수 있는 대표적인 클라우드 스토리지 프로그램으로 Nextcloud가 있다. Nextcloud는 구글 드라이브나 드롭박스 등과 같은 일을 하는 프로그램으로, 웹이나 앱에서 홈 서버의 파일을 사용하고, 홈 서버에 파일을 전송하고, 파일을 외부와 공유할 URI를 만들고, 모바일 기기에서 촬영한 사진을 자동으로 홈 서버에 업로드하고, PC나 Mac, 리눅스에 클라이언트 프로그램을 설치하면 홈 서버와 파일을 동기화할 수 있다. 자체적으로 WebDAV 프로토콜과 채팅 등의 기능도 제공한다. https://demo.nextcloud.com에서 데모를 사용해볼 수 있다.

    Nextcloud 설치 방법들

    Nextcloud는 우분투 서버에 직접 설치하거나, Snap 패키지로 설치하거나, Docker 이미지로 실행할 수 있다. 이 중에서 직접 설치는 설정해야 할 사항이 너무 많고, Snap 패키지는 외부 SMB 스토리지 연결이 불가능한 단점이 있다. 여기서는 Nextcloud 측에서 완성해서 배포하는 Nextcloud Docker 이미지를 내려받아 실행하는 간편한 방법을 택했다.

    또한 Nextcloud 측이 제공하는 여러 가지 Docker 이미지 구성 방법 중에서 docker-compose를 이용해서 mariadb, cron, redis, apache를 조합하는 방식을 택했다. 이 방식으로 Nextcloud를 실행하면 Nextcloud Docker 이미지에 자체 내장된 apache 웹 서버로 Nextcloud가 내부 네트워크에서 작동하게 되고, 우분투 서버에서 리버스 프록시 구성을 해주면 외부 네트워크에서도 사용할 수 있게 된다.

    Nextcloud (Docker) 실행 준비

    서브도메인 생성

    넥스트 클라우드 접속용 서브도메인을 하나 생성한다. 여기서는 cloud.example.com을 생성한 것으로 가정한다. (도메인에 대한 일반적인 내용은 도메인과 DNS를 참고한다.)

    Docker 설치

    우분투 서버에 Docker가 설치되어 있지 않다면 Docker를 설치한다.

    sudo apt update
    
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    
    sudo apt update
    
    sudo apt install docker-ce
    

    위 명령은 Docker의 패키지 저장소를 통해서 최신 stable 버전의 Docker 엔진을 설치하는 명령이다. 패키지 저장소 정보를 업데이트하고, Docker의 공식 GPG key를 내려 받고, Docker의 패키지 저장소를 추가하고, 다시 패키지 저장소 정보를 업데이트 한 다음에 docker 엔진을 설치한다. 만일 add-apt-repository 명령이 작동하지 않는다면 우분투 서버에 software-properties-common이 설치되어 있지 않은 경우이므로 sudo apt install software-properties-common 명령으로 먼저 설치한 다음에 진행한다.

    docker --version

    이 명령으로 Docker version 19.03.11 등의 Docker 버전이 출력되면 Docker가 설치된 것이다.

    docker-compose 설치

    여러 가지 Docker 이미지를 동시에 사용할 때 그 구성을 쉽게 도와주는 docker-compose를 설치한다.

    우선 https://github.com/docker/compose/releases 주소에 접속해서 설치할 docker-compose의 버전 번호를 확인한다.

    sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    

    확인한 docker-compose의 버전 번호를 위 예시 명령어의 빨간색 부분에 넣고 실행한다.

    sudo chmod +x /usr/local/bin/docker-compose
    

    설치된 docker-compose에 실행 권한을 부여한다.

    docker-compose --version
    

    이 명령으로 docker-compose version 1.26.0 등의 docker-compose 버전이 출력되면 설치가 완료된 것이다.

    Nextcloud (Docker) 실행

    각각의 docker-compose는 고유한 개별 디렉토리에서 실행해야 한다. Nextcloud를 실행할 docker-compose 디렉토리를 생성하고 실행에 필요한 파일들을 생성한다.

    디렉토리 생성

    sudo mkdir /var/www/nextcloud
    

    Nextcloud를 실행할 docker-compose 디렉토리를 생성한다. 여기서는 /var/www/ 경로에 nextcloud라는 이름으로 생성했다.

    환경 파일 생성

    sudo nano /var/www/nextcloud/db.env
    

    생성한 디렉토리에 여러 Docker 이미지가 공통으로 사용할 환경 파일을 nano 편집기로 생성한다.

    MYSQL_PASSWORD=mysql-password
    MYSQL_DATABASE=nextcloud
    MYSQL_USER=nextcloud
    

    생성한 환경 파일에 Nextcloud가 사용할 DB 정보를 위와 같이 작성한다. 빨간색 mysql-password는 자신이 원하는 비밀번호로 변경한다. 작성했으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

    이미지 재빌드 설정

    sudo mkdir /var/www/nextcloud/app
    

    Nextcloud의 기본 Docker 이미지에는 외부 SMB 스토리지를 연결하는 기능이 빠져있다. 이 기능을 추가하고 다시 빌드해서 사용할 것이다. 먼저 app 이라는 이름의 하위 경로를 추가로 생성한다.

    sudo nano /var/www/nextcloud/app/Dockerfile
    

    생성한 경로에 SMB 기능을 추가하는 명령을 담을 Dockerfile 파일을 nano 편집기로 생성한다.

    FROM nextcloud:apache
    
    RUN apt-get update && apt-get install -y procps smbclient && rm -rf /var/lib/apt/lists/*
    

    위와 같이 Nextcloud의 기본 Docker 이미지인 nextcloud:apache에 SMB 기능을 추가하는 명령을 작성하고, 작성을 마쳤으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

    docker-compose.yml 작성

    이제 여러 가지 Docker 이미지를 조합하고 실행하는데 필요한 설정을 담을 docker-compose.yml 파일을 작성한다.

    sudo nano /var/www/nextcloud/docker-compose.yml
    

    앞서 생성한 docker-compose 실행 디렉토리 /var/www/nextcloud/에 nano 편집기로 docker-compose.yml 파일을 생성한다.

    version: '3'
    
    services:
      db:
        image: mariadb
        command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
        restart: always
        volumes:
          - db:/var/lib/mysql
        environment:
          - MYSQL_ROOT_PASSWORD=mysql-root-password
        env_file:
          - db.env
    
      redis:
        image: redis:alpine
        restart: always
    
      app:
        build: ./app
        restart: always
        ports:
          - 8080:80
        volumes:
          - nextcloud:/var/www/html
        environment:
          - MYSQL_HOST=db
          - REDIS_HOST=redis
          - NEXTCLOUD_TRUSTED_DOMAINS=cloud.example.com
          - OVERWRITEPROTOCOL=https
          - NEXTCLOUD_ADMIN_USER=admin-id
          - NEXTCLOUD_ADMIN_PASSWORD=admin-password
        env_file:
          - db.env
        depends_on:
          - db
          - redis
    
      cron:
        build: ./app
        restart: always
        volumes:
          - nextcloud:/var/www/html
        entrypoint: /cron.sh
        depends_on:
          - db
          - redis
    
    volumes:
      db:
      nextcloud:
    

    Nextcloud 측에서 제공하는 예시를 바탕으로 필요한 여러 가지 옵션을 추가해서 작성한다.

    위의 내용을 살펴보면, db: redis: app: cron: 4가지의 서비스가 실행되는데, db:mariadb 이미지, redis:redis:alpine 이미지를 내려받아 실행하고, app:cron:build: 옵션을 통해 ./app 디렉토리에 작성되어 있는 Dockerfile 파일의 내용을 따라서 nextcloud:apache 이미지를 내려받아서 SMB 연결 기능을 추가하여 다시 빌드한 이미지를 실행한다. 이때 app:8080번 포트를 사용해서 실행된다. 또한 db:app:은 환경 파일 db.env를 읽어들이고, 추가로 environment:에 기록된 내용을 적용한다.

    이중에서 db:app:environment: 내용은 자신에게 맞게 조정해야 되는데, 그 내용은 아래와 같다.

    - MYSQL_ROOT_PASSWORD=mysql-root-password
    

    mysql-root-password 부분을 자신만의 비밀번호로 바꿔서 작성한다.

    - NEXTCLOUD_TRUSTED_DOMAINS=cloud.example.com
    

    Nextcloud 접속에 사용할 도메인을 기록한다.

    - OVERWRITEPROTOCOL=https
    

    Nginx로 리버스 프록시를 구성했을 때 https 연결을 원활하게 해주는 옵션으로 https 라고 기록한다.

    - NEXTCLOUD_ADMIN_USER=admin-id
    - NEXTCLOUD_ADMIN_PASSWORD=admin-password
    

    넥스트 클라우드의 관리자 ID와 비밀번호를 생성하는 옵션으로 admin-id와 admin-password 부분을 자신만의 ID와 비밀번호로 바꿔서 작성한다. 이 두 항목이 docker-compose.yml 파일에 기록되어 있으면 Nextcloud는 관리자를 생성하는 화면을 웹 상에 노출시키지 않고 자동으로 설정을 마무리한다. 만일 웹 화면에서 Nextcloud 관리자를 생성하고 싶다면 docker-compose.yml 파일에서 이 두 항목을 삭제한다.

    참고로, Docker 방식의 Nextcloud이므로 Nextcloud에 업로드하는 파일은 Docker 이미지 안에 저장된다. 이를 Docker 이미지 외부의 우분투 서버 상의 공간에 저장하려면 app:cron: 항목의 volumes: 부분에 - /원하는/데이터/저장/경로:/var/www/html/data 형태의 설정을 추가한다. 한편, Nextcloud에 우분투 서버의 SMB 디렉토리를 연결하고 이 SMB 디렉토리에만 파일을 업로드하는 형태로 사용한다면 본 설정을 추가하지 않아도 모든 데이터는 자연히 Nextcloud Docker 이미지 외부의 우분투 서버 상의 SMB 디렉토리에 저장된다.

    그 밖에 더 필요한 설정이 있다면 넥스트 클라우드 GitHub의 설명을 참고한다.

    docker-compose.yml 파일 작성을 마쳤으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

    docker-compose 실행

    cd /var/www/nextcloud
    

    docker-compose 디렉토리로 이동한다.

    sudo docker-compose up -d
    

    이 명령으로 docker-compose를 실행하면 docker-compose.yml 파일에 기록된 대로 각각의 Docker 이미지를 내려받고 재빌드하여 최종적으로 넥스트 클라우드가 실행된다.

    Nginx 리버스 프록시 설정

    위와 같은 설정으로 Nextcloud Docker 이미지를 실행하면 Nextcloud Docker 이미지에 자체 내장된 apache 웹 서버로 Nextcloud가 내부 네트워크에서 작동하게 된다. 이를 외부 네트워크로 연결하려면 우분투 서버에 운영 중인 웹 서버를 이용해서 리버스 프록시를 구성해준다.

    Nginx 설치

    리버스 프록시를 구성할 때 사용할 웹 서버로 기존에 우분투 서버에 설치해서 사용하고 있는 Nginx를 이용한다. Nginx 설치 및 기본적인 설정 방법은 앞선 글 웹 서버: Nginx를 참고한다.

    TLS 인증서 발급

    https 보안 연결을 구성하기 위해서 cloud.example.com 도메인에 대한 TLS 인증서를 발급받는다. 자세한 방법은 앞선 글 TLS 인증서: Let’s Encrypt를 참고한다. 이 방법으로 인증서를 발급받으면 *.example.com 형태의 와일드카드 서브도메인에 대한 인증서가 발급되므로 이 인증서를 그대로 cloud.example.com 서브도메인에 사용할 수 있다.

    TLS 1.3 적용 준비

    보안 연결을 구축하는 프로토콜 TLS는 2018년 8월에 1.3버전으로 업데이트 되었다. 우분투 서버에서는 OpenSSL이 TLS를 담당하는데, 2018년 9월에 출시된 OpenSSL 1.1.1 버전부터 TLS 1.3을 지원한다. 따라서 자신의 시스템에 설치된 OpenSSL의 버전을 확인한 후 1.1.1 미만의 버전이라면 1.1.1 이상의 버전으로 업그레이드해야 TLS 1.3을 이용할 수 있다. 이후 TLS 1.3 설정은 Nginx의 여러 서버 블록 중에서 default_server로 지정된 서버 블록에 TLS 1.3 설정이 되어 있어야 TLS 1.3이 작동한다. default_server 옵션과 TLS 1.3, OpenSSL 업그레이드에 관해서는 앞선 글 웹 서버: Nginx를 참고한다.

    DH Param 키 생성

    sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

    앞선 글 웹 서버: Nginx를 통해서 DH Param 키를 생성했다면 그 키 하나로 모든 웹사이트에 사용할 수 있으므로 이 단계는 건너뛴다. 만일 생성하지 않았다면 위 명령으로 DH Param 키를 생성한다. DH Param 키는 https 보안 연결에서 암호화 성능을 높이기 위해서 추가로 사용하는 난수인데, 위 명령어는 4096 비트 (512 바이트) 로 생성하므로 시간이 오래 걸린다. 서버 컴퓨터의 성능에 따라 다르지만 길게는 수십분 가량 소요되기도 한다. 2048 비트 (256 바이트) 로 생성하려면 위의 명령에서 끝에 4096을 2048로 바꿔서 입력한다. 키가 생성되는 위치는 /etc/ssl/certs/dhparam.pem 으로 지정했다.

    Nginx 설정

    sudo nano /etc/nginx/sites-available/cloud.example.com

    cloud.example.com의 서버 블록 파일을 nano 편집기로 새로 생성한다. 구분하기 쉽도록 서버 블록 파일 이름을 cloud.example.com 도메인 이름 그대로 사용했다.

    server {
            listen 80;
    
            server_name cloud.example.com;
    
            return 301 https://$server_name$request_uri;
    }
    
    server {
            listen 443 ssl http2;
    
            server_name cloud.example.com;
    
            ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
            ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
            ssl_dhparam /etc/ssl/certs/dhparam.pem;
    
            ssl_protocols TLSv1.2 TLSv1.3;
            ssl_prefer_server_ciphers on;
            ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256;
            ssl_ecdh_curve secp384r1;
            ssl_session_timeout 10m;
            ssl_session_cache shared:SSL:10m;
            ssl_session_tickets off;
            ssl_stapling on;
            ssl_stapling_verify on;
            resolver 1.1.1.1 1.0.0.1 valid=300s;
            resolver_timeout 5s;
    
            location = /.well-known/carddav {
                    return 301 $scheme://$host:$server_port/remote.php/dav;
            }
    
            location = /.well-known/caldav {
                    return 301 $scheme://$host:$server_port/remote.php/dav;
            }
    
            location / {
                    proxy_pass http://127.0.0.1:8080/;
                    proxy_http_version 1.1;
                    proxy_set_header Host $http_host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-Proto $scheme;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
                    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
    
                    client_max_body_size 0;
            }
    }
    

    도메인 부분을 자신의 것으로 변경해야 함을 유의하면서, 서버 블록 내용을 위와 같이 작성한다. ssl_certificatessl_certificate_keyssl_trusted_certificate에는 앞서 발급받은 TLS 인증서 파일의 경로가 들어가고, ssl_dhparam에는 DH Param 키의 경로가 들어간다. proxy_pass 부분의 포트 번호는 docker-compose.yml 파일에서 설정한 8080이다.

    작성이 끝났으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

    sudo ln -s /etc/nginx/sites-available/cloud.example.com /etc/nginx/sites-enabled/

    작성한 서버 블록을 작동시키기 위해 /etc/nginx/sites-enabled/ 경로에 심볼릭 링크를 만들어준다.

    만일 이런 서버 블록을 여러 개 생성해서 다수의 웹사이트를 운영한다면 도메인 처리를 원활하게 하기 위해 Nginx 설정 파일 nginx.conf에 아래의 설정을 추가한다.

    sudo nano /etc/nginx/nginx.conf

    Nginx 설정 파일인 nginx.conf 파일을 nano 편집기로 연다.

    server_names_hash_bucket_size 64;

    server_names_hash_bucket_size 64;를 찾아서 앞에 주석 설정 #을 제거하고, Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다. 이미 처리되어 있다면 그대로 nano 편집기를 빠져나온다.

    이상으로 서버 블록 설정이 끝났으면, 설정한 서버 블록이 Nginx에 반영되도록 아래와 같이 Nginx를 재시작한다.

    sudo nginx -t

    Nginx 설정에 기본적인 문법 오류가 없는지 점검한다. 오류가 없다면
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    이런 메시지가 출력된다. 만일 다른 메시지가 나온다면 메시지를 참고해서 설정 사항을 점검한다.

    sudo systemctl restart nginx

    오류가 없으면 Nginx를 재시작한다.

    이제 웹 브라우저로 cloud.example.com 주소에 접속하면 Nextcloud를 사용할 수 있다.

    Nextcloud 설정

    웹 브라우저로 cloud.example.com 에 접속해서 로그인한 다음, 우측 상단의 톱니바퀴 모양 또는 동그라미 모양의 버튼을 클릭하면 설정 메뉴가 나타난다. 설정은 넥스트 클라우드 전반을 설정하는 메뉴이고, 은 넥스트 클라우드에 추가로 설치할 수 있는 앱을 관리하는 메뉴이다. 사용자에서는 넥스트 클라우드에 접속하는 계정을 관리할 수 있다.

    설치 상태 확인

    설정 화면에서 좌측 패널의 관리 영역에 있는 개요를 클릭하면 오른쪽에 보안 및 설치 경고 항목에서 현재 넥스트 클라우드의 상태를 자동으로 확인하고 그 내용을 출력해준다. 모든 검사를 통과했습니다. 라는 메시지가 표시되지 않으면 화면에 출력된 내용을 참고해서 적절히 수정해준다.

    외부 저장소 연결

    우측 상단의 메뉴를 클릭해서 앱 관리 화면으로 들어가면 좌측 패널의 내 앱 메뉴에서 현재 넥스트 클라우드에 설치된 앱들을 확인할 수 있다. 이 중에서 External storage support사용함을 클릭해서 활성화하면 넥스트 클라우드에 외부 저장소를 연결할 수 있다. 활성화하고 다시 우측 상단의 메뉴를 클릭해서 설정 화면으로 넘어가 보면 좌측 패널의 개인 영역과 관리 영역에 각각 외부 저장소 메뉴가 생성된 것이 보인다. 관리 영역의 외부 저장소 메뉴를 클릭하면 여러 가지 외부 데이터 위치를 연결할 수 있는 설정 화면이 나타난다. 저장소 추가 항목을 클릭하면 Amazon S3, FTP, Nextcloud, OpenStack, SFTP, SMB/CIFS, WebDAV, 로컬 경로를 연결할 수 있다.  

    예를 들어 앞선 글 네트워크 파일 공유: SMB에서 설정한 SMB 디렉토리를 연결한다면 저장소 추가에서 SMB/CIFS를 선택한다. 폴더 이름에 이 SMB 디렉토리가 넥스트 클라우드 상에서 보여질 이름을 입력한다. 인증사용자 이름과 암호를 선택하고, 호스트192.168.000.000 등의 연결할 SMB 컴퓨터의 내부(사설) IP를 입력하고, 공유에 SMB 설정 파일 /etc/samba/smb.conf에 대괄호 [ ] 안에 기재한 내용을 입력한다. 사용자 이름암호에 SMB 접속 정보를 넣고, 다음으로 사용 가능에서 이 SMB 디렉토리를 사용할 수 있는 넥스트 클라우드 사용자를 선택한다. 3개의 점 모양의 버튼을 클릭하면 외부와 공유할 수 있게 할 것인지 등을 설정할 수 있고, 체크 표시 모양의 버튼을 클릭하면 설정이 완료된다. 정상적으로 연결되었으면 폴더 이름 앞쪽에 녹색 동그라미가 표시된다. 이제 넥스트 클라우드 메인 화면에 가보면 SMB 디렉토리에 접근할 수 있게 되어 있다.

    2단계 인증

    앱 관리 화면의 왼쪽 패널에는 추가로 설치할 수 있는 여러 가지 앱들의 카테고리가 있다. 보안 카테고리에서 Two-Factor TOTP Provider을 활성화하면 넥스트 클라우드에 로그인할 때 2단계 인증을 사용할 수 있다. 활성화했으면 우측 상단 메뉴를 클릭해서 설정 화면으로 넘어와서, 좌측 패널의 개인 영역에서 보안을 클릭하면 오른쪽에 TOTP (Authenticator app) 항목이 생성된 것을 볼 수 있다. TOTP 활성화를 클릭하면 구글 Authenticator 등의 OTP를 이용한 2단계 인증을 설정할 수 있다.

    데스크톱 및 모바일 앱

    넥스트 클라우드는 데스크톱 클라이언트 프로그램과 모바일 앱을 제공한다. 윈도우 PC, Mac, 리눅스, iOS, 안드로이드 등을 지원하고, 앱에서 넥스트 클라우드의 파일을 사용하고 업로드/다운로드 할 수 있다. 모바일 앱에는 촬영한 사진을 자동으로 넥스트 클라우드에 업로드하는 기능도 있다. 데스크톱 컴퓨터에 클라이언트 프로그램을 설치하면 PC나 Mac과 넥스트 클라우드의 데이터를 동기화할 수도 있다.

    Nextcloud occ 명령 실행법

    Nextcloud는 occ라는 자체 명령어를 이용해서 시스템을 설정하고 관리할 수 있다. docker-compose로 Nextcloud를 실행한 경우에는 아래의 방식으로 occ 명령을 실행할 수 있다.

    cd /var/www/nextcloud
    
    sudo docker-compose exec --user www-data app php occ 명령어
    

    Nextcloud를 실행하는 docker-compose 디렉토리로 이동한 다음, 위의 형태로 빨간색 명령어 부분에 원하는 명령어를 넣고 실행한다.

    여러 가지 occ 명령에 관해서는 Nextcloud 웹사이트의 Using the occ command 페이지를 참고한다.

    Docker 컨테이너 내부 접속법

    Docker 컨테이너 내부에 직접 접속하려면 아래의 절차로 진행한다.

    sudo docker ps -a
    

    위 명령을 실행하면 CONTAINER ID 부분에 123456789abc 같은 문자열이 출력될 것이다.

    sudo docker exec -it 123456789abc bash
    

    접속하려는 Docker 컨테이너의 CONTAINER ID를 포함하여 위의 형태의 명령을 실행하면 root@123456789abc 등의 형태로 해당 Docker 컨테이너의 bash에 접속된다. 접속을 종료하려면 exit를 입력해서 빠져나온다.

    Nextcloud 업그레이드

    Docker로 실행한 Nextcloud를 업그레이드하려면 아래의 명령을 차례대로 실행한다.

    cd /var/www/nextcloud
    
    sudo docker-compose pull
    
    sudo docker-compose build --pull
    
    sudo docker-compose up -d
    

    Nextcloud 삭제

    Docker로 실행한 Nextcloud를 삭제하려면 아래의 명령을 차례대로 실행한다.

    cd /var/www/nextcloud
    
    sudo docker-compose stop
    
    sudo docker-compose down -v
    

    그다음, 생성된 Docker 컨테이너와 내려받은 Docker 이미지까지 삭제하려면 아래의 절차를 따른다.

    sudo docker ps -a
    

    위 명령을 실행하면 Docker 컨테이너가 남아 있는 경우 CONTAINER ID 부분에 123456789abc 같은 문자열이 출력될 것이다.

    sudo docker rm -f 123456789abc
    

    삭제하고 싶은 Docker 컨테이너의 CONTAINER ID를 포함해서 위 명령을 실행하면 해당 Docker 컨테이너가 삭제된다.

    sudo docker images -a
    

    위 명령을 실행하면 Docker 이미지가 남아 있는 경우 IMAGE ID 부분에 123456789abc 같은 문자열이 출력될 것이다.

    sudo docker rmi -f 123456789abc
    

    삭제하고 싶은 Docker 이미지의 IMAGE ID를 포함해서 위 명령을 실행하면 해당 Docker 이미지가 삭제된다.

     

    본 글의 저작권은 작성자 Varins에게 있습니다.
    Varins의 사전 서면 동의 없이 본 글의 전부 또는 일부를 무단으로 전재, 게시, 배포하는 것을 금지합니다.
    

Leave a comment

댓글은 관리자의 승인 이후에 게시됩니다.