Download a file to a docker container: Portainer 터미널 wget, curl 사용법
Portainer 웹 UI의 터미널을 사용하여 실행 중인 도커 컨테이너 내부에 파일을 직접 다운로드하는 가장 간단한 방법을 알아보세요. wget과 curl 명령어 예제를 제공합니다."
실행 중인 도커(Docker) 컨테이너 내부에 웹상의 파일을 직접 다운로드해야 할 때가 있습니다. Portainer(포테이너)를 사용하고 있다면, 웹 UI에서 제공하는 터미널(exec console)을 통해 이 작업을 매우 간단하게 처리할 수 있습니다.
이 가이드에서는 wget과 curl 두 가지 기본 명령어를 사용하여 Portainer 터미널에서 도커 컨테이너로 파일을 다운로드하는 방법을 단계별로 설명합니다.
전제 조건 (Prerequisites)
이 가이드를 따라하기 전, 다음 사항이 준비되어 있어야 합니다.
- Portainer가 설치되어 있고 정상적으로 실행 중이어야 합니다.
- 파일을 다운로드할 도커 컨테이너가 실행 중인 상태여야 합니다.
- Portainer 웹 UI에 접속하여 해당 컨테이너의 'Console' 또는 'Exec console'에 접근할 수 있어야 합니다.
1. wget을 사용한 파일 다운로드
wget은 URL로부터 파일을 내려받는 기본적인 리눅스 명령어입니다. 대부분의 리눅스 기반 도커 이미지에 기본적으로 포함되어 있습니다.
기본 명령어 형식
가장 기본적인 형태는 -P 옵션을 사용하여 저장할 폴더를 지정하는 것입니다.
# 기본 형식
wget -P /저장할/폴더/경로 "다운로드할 파일 URL"
-P /path/to/folder: 대문자 P 옵션은 'Prefix'의 약자로, 파일을 저장할 디렉터리를 지정합니다. 이 옵션을 생략하면 현재 디렉터리에 저장됩니다.
실제 사용 예제
예제 1: /app 폴더에 다운로드
컨테이너 내의 /app 디렉터리에 파일을 저장하려면 다음과 같이 입력합니다.
wget -P /app "다운로드할 파일 URL"
예제 2: /root 폴더에 다운로드
먼저 해당 디렉터리로 이동(cd)한 후 wget을 실행하면 현재 위치에 파일이 저장됩니다.
cd /root
wget "다운로드할 파일 URL"
예제 3: 현재 작업 중인 폴더에 다운로드
별도의 경로 지정 없이 wget 명령어만 사용하면 현재 터미널이 위치한 디렉터리에 파일이 다운로드됩니다.
wget "다운로드할 파일 URL"
2. curl을 사용한 파일 다운로드
curl 역시 데이터를 전송하기 위한 강력한 도구이며, 파일 다운로드에도 사용할 수 있습니다. wget과 달리 -o (소문자 o) 옵션을 사용하여 저장될 파일의 경로와 이름을 직접 지정해야 합니다.
기본 명령어 형식
# 기본 형식
curl -o /저장할/폴더/경로/파일명.확장자 "다운로드할 파일 URL"
-o /path/to/file: 소문자 o 옵션은 'output'의 약자로, 다운로드한 내용을 저장할 파일의 경로와 이름을 지정합니다. 이 옵션을 생략하면curl은 다운로드 내용을 터미널 화면에 그대로 출력합니다.
실제 사용 예제
/app 폴더에 yes24.py라는 이름으로 파일을 저장하는 예제입니다.
curl -o /app/yes24.py "다운로드할 파일 URL"
| 명령어 | 장점 | 사용법 |
|---|---|---|
wget |
사용이 간단하고, 기본적으로 파일로 저장됩니다. | wget -P /경로 "URL" |
curl |
더 많은 프로토콜을 지원하며 유연성이 높습니다. | curl -o /경로/파일명 "URL" |
3. 다운로드 확인하기
파일 다운로드가 완료된 후에는 ls -l 명령어를 사용하여 파일이 해당 경로에 정상적으로 생성되었는지 확인하는 것이 좋습니다.
# /app 폴더의 파일 목록을 자세히 보기
ls -l /app
위 명령어를 실행했을 때 방금 다운로드한 파일명과 크기가 보인다면 성공적으로 완료된 것입니다.
4. 문제 해결: wget 또는 curl이 설치되지 않은 경우
사용 중인 도커 이미지에 따라 wget이나 curl이 설치되어 있지 않을 수 있습니다. command not found 와 같은 에러가 발생하면 아래 방법 중 하나를 선택하여 해결할 수 있습니다.
방법 1: 다른 명령어 사용하기
wget이 없다면 curl을, curl이 없다면 wget을 사용해 보세요. 많은 경우 둘 중 하나는 설치되어 있습니다.
# wget이 없을 때 curl 사용
curl -o /app/yes24.py "다운로드할 파일 URL"
방법 2: wget 직접 설치하기 (Debian/Ubuntu 기반 이미지)
컨테이너가 Debian이나 Ubuntu 기반이라면 apt 패키지 매니저를 사용하여 wget을 직접 설치할 수 있습니다.
# 패키지 목록 업데이트 후 wget 설치
apt update && apt install wget -y
⚠️ 주의: apt update 명령어는 컨테이너의 네트워크 설정에 따라 시간이 걸리거나 실패할 수 있습니다. 또한, 컨테이너를 다시 시작하면 설치된 패키지가 사라질 수 있으니 유의하시기 바랍니다.More Stories from Author
다른 주제도 보고 싶다면 아래에서 더 둘러봐주세요. 방문해주시면 큰 힘이 됩니다.
블로그: https://kage2kapp.org/
JLPT N1 문제PDF: https://is.gd/44HpEy
유튜브: https://www.youtube.com/@heesungjin8554
📱 필자가 만든 앱(LIST)
외국어 학습이 더 쉬워지도록 그리고,
일상이 조금 더 편해지도록 만들고 있어요.
🍎 App Store → https://is.gd/Qw2aIq
🤖 Google Play → https://is.gd/JvwAZr
문의사항은 flutterkage2k@gmail.com
자주 묻는 질문 (FAQ)
Q1: Portainer 터미널에서 현재 위치는 어떻게 확인하나요?
A1: 리눅스 터미널과 동일하게 pwd 명령어를 입력하면 현재 작업 중인 디렉터리의 전체 경로를 확인할 수 있습니다.
Q2: 다운로드한 파일의 권한은 어떻게 되나요?
A2: 파일은 터미널에 접속한 사용자(기본적으로 root)의 권한으로 생성됩니다. 필요시 chmod나 chown 명령어로 권한을 변경할 수 있습니다.
Q3: wget과 curl 중 어떤 것을 사용하는 것이 더 좋은가요?
A3: 단순 파일 다운로드가 목적이라면 둘 중 어떤 것을 사용해도 무방합니다. wget은 사용법이 더 직관적이고, curl은 더 다양한 기능을 제공하여 스크립트 작성 시 유용합니다. 컨테이너에 설치된 것을 사용하면 됩니다.