반응형
필수패키지 설치
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
Docker 공식 GPG 키 추가
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.asc
Docker 저장소 추가
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
패키지 목록 업데이트 및 Docker 설치
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Docker 서비스 활성화 및 실행 확인
sudo systemctl enable --now docker
sudo systemctl status docker
현재 사용자를 Docker 그룹에 추가 (재부팅 필요)
sudo usermod -aG docker $USER
newgrp docker
sudo reboot
Docker 설치 확인
docker --version
docker run hello-world
도커 컴포즈 설치
sudo curl -L "https://github.com/docker/compose/releases/download/v2.33.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
도커 컴포즈 권한 부여
sudo chmod +x /usr/local/bin/docker-compose
심볼릭 링크 연결
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
버전 확인
docker-compose --version
Dockerfile 생성
FROM nginx:latest
# 필요한 패키지 설치
RUN apt-get update && apt-get install -y \
smbclient \
cifs-utils \
&& rm -rf /var/lib/apt/lists/*
# 스크립트 복사
COPY ./scripts/smb-mount.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/smb-mount.sh
# Nginx 설정 파일 복사
COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
마운트 스크립트 생성
smb-mount.sh
#!/bin/bash
# SMB 마운트 디렉토리 생성
mkdir -p /mnt/smb
# SMB 서버 마운트
mount -t cifs //${SMB_SERVER}/${SMB_SHARE} /mnt/smb \
-o username=${SMB_USER},password=${SMB_PASSWORD}
# Nginx 시작
nginx -g 'daemon off;'
Nginx 컨테이너 실행
docker run -d --name nginx -p 18080:80 nginx
docker ps
docker ps -a
docker stop 컨테이너ID
docker rm 컨테이너ID
docker images
docker rmi 이미지ID
도커 컨테이너 접속하기
docker exec -it <컨테이너ID or 컨테이너명> /bin/bash
cat nginx.conf
SSL 인증서 생성 (Let's Encrypt 사용)
# Certbot 설치
sudo apt install -y certbot
# 도메인에 대한 SSL 인증서 발급
sudo certbot certonly --standalone -d your-domain.com
Nginx 컨테이너에 HTTPS 설정 (Let's Encrypt + Certbot)
docker-compose.yml 파일
version: '3'
services:
nginx:
image: nginx:latest
container_name: nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "18080:80"
- "18443:443"
environment:
- SMB_SERVER=your-smb-server
- SMB_SHARE=your-share
- SMB_USER=your-username
- SMB_PASSWORD=your-password
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- /etc/letsencrypt:/etc/letsencrypt
- ./nginx/html:/usr/share/nginx/html
Nginx 설정 파일
./nginx/conf.d/default.conf 파일 생
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
Let's Encrypt SSL 인증서 발급
docker-compose run --rm certbot certbot certonly --webroot -w /var/www/certbot --email your-email@example.com -d example.com -d www.example.com --agree-tos --no-eff-email
Nginx 재시작
실행 및 테스트
docker-compose up -d
# 로그 확인
docker-compose logs -f
# 컨테이너 내부 접속
docker exec -it nginx-smb bash
# SMB 연결 테스트
smbclient -L //${SMB_SERVER} -U ${SMB_USER}
자동 갱신 설정
# crontab 편집
sudo crontab -e
# 아래 내용 추가
0 0 1 * * certbot renew --quiet && docker restart nginx
SMB 명령어 사용 예시
컨테이너 내부에서:
# SMB 서버 리스트 확인
smbclient -L //서버주소 -U 사용자명
# SMB 공유 접속
smbclient //서버주소/공유명 -U 사용자명
# 파일 다운로드
smbclient //서버주소/공유명 -U 사용자명 -c "get 파일명"
# 파일 업로드
smbclient //서버주소/공유명 -U 사용자명 -c "put 로컬파일명"
자동화 스크립트 예시
smb-sync.sh
#!/bin/bash
# SMB 서버에서 파일 동기화
sync_smb() {
smbclient //${SMB_SERVER}/${SMB_SHARE} -U ${SMB_USER}%${SMB_PASSWORD} -c "
cd remote_dir
lcd /local_dir
mget *
"
}
# 주기적으로 실행
while true; do
sync_smb
sleep 300 # 5분마다 실행
done
반응형
'DevOps > 리눅스' 카테고리의 다른 글
ubuntu 24.04 PostgreSql 설치 (0) | 2025.03.14 |
---|---|
ubuntu 24.04 mysql 설치 (0) | 2025.03.13 |
ujubuntu 24.04 원격데스크탑 접속 (0) | 2025.03.08 |
MobaXTerm 으로 복사 붙여넣기 할때 in '^[[200~required text~' (0) | 2025.03.07 |
ubuntu 24.04 Samba(SMB) 설치 (0) | 2025.03.07 |
댓글