코딩, 개발에 대한 기록 저장소
레이블이 Docker인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Docker인 게시물을 표시합니다. 모든 게시물 표시

Docker Compose에서 환경변수 적용 우선 순위

Docker Compose에서 환경변수 적용 우선 순위

Docker 공식 문서에 따르면 그 우선순위는 다음과 같음

  1. Compose 파일에 입력한 값
  2. 쉘 환경변수에 등록한 값
  3. 환경변수 파일에 입력된 값(.env 등)
  4. Dockerfile 에 입력한 값


[WSL] ssh 서비스 설치 및 윈도우 재시작시 자동 실행

SSH서버 설치하기

설치

# 설치
$ sudo apt install openssh-server

# 부팅시 자동 실행
$ sudo systemctl enable ssh

# 호스트키 생성
$ sudo ssh-keygen -A

# 비밀번호 인증방식 설정
$ sudo nano /etc/ssh/sshd_config
>> 아래 항목을 no 에서 yes로 수정
PasswordAuthentication no >> yes

# ssh 서비스 시작
$ sudo service ssh start

윈도우 재시작시 자동 실행

service 명령을 sudo 로 실행 할 경우 비밀 번호를 묻지 않도록 설정

# sudo visudo 실행
$ sudo visudo

# 맨 마지막 부분에 아래 내용 추가 (account 는 자기 계정, 자기 계정이 aaa 이면 aaa 입력)
# Allow member without password
account ALL=(ALL) NOPASSWD: ALL

윈도우 작업 스케줄러 설정

작업 스케줄러를 실행 한 후 새로운 작업을 만들어 다음 조건을 입력

  • 트리거 : 시작할 때
  • 동작 : 프로그램시작
  • 프로그램/스크립트 : "C:\Windows\System32\bash.exe"
  • 인수 추가(옵션) : -c "sudo service ssh start"

윈도우가 시작할 때 마다 WSL의 ssh 가 자동 시작 됨



WSL 에 docker 설치 (docker desktop 사용 안함)

WSL과 Windows를 최대한 독립된 환경처럼 구성하기 위한 docker desktop를 사용하지 않고 docker를 설치하는 과정을 설명합니다.

필요한 패키지 설치

sudo apt update
sudo apt upgrade
sudo apt install ca-certificates curl gnupg lsb-release

Docker의 Official GPG Key를 등록

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Docker의 Repository를 APT에 등록

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update

Docker를 설치

sudo apt install docker-ce docker-ce-cli containerd.io

Docker 그룹에 사용자 추가

sudo usermod -aG docker $USER

Docker 서비스 시작

sudo service docker start


WSL 에서 docker 사용시 mnt 하위 경로 오류 발생

wsl 환경에서 docker를 이용하다보면 /mnt의 c나 d 폴더 하위에서 오류가 발생하는 경우가 있다.
C와 D는 윈도우 운영체제의 C드라이브와 D드라이브를 의미하고 윈도우 운영체제가 권한을 관리하기 때문에 chown이나 chmod와 같은 설정을 해도 적용되지 않는다.

WSL 환경에서 폴더 권한 설정이 되지 않으면 아래 명령을 실행하고 다시 시도하자.
혹시 기존에 /mnt 하위에 공유 볼륨을 지정하여 사용 중인 컨테이너가 있다면 영향을 받기 때문에 기존 컨테이너들을 모두 종료하고 진행해자.

$ sudo umount /mnt/d
$ sudo mount -t drvfs D: /mnt/d -o metadata


[Docker] 이미지와 컨테이너

도커 이미지와 컨테이너의 개념

이미지와 컨테이너는 다음과 같은 개념으로 이해할 수 있습니다:

  • 프로그램과 프로세스의 관계처럼,
  • 객체지향 개념에서 이미지는 클래스, 컨테이너는 객체로 볼 수 있음

하나의 이미지로부터 여러 개의 컨테이너를 생성할 수 있으며, 이 컨테이너들은 모두 서로 격리된 상태로 독립적으로 동작합니다.

컨테이너 내에서 변경을 가하더라도 기존 이미지에는 영향을 미치지 않습니다.

도커 관련 주요 명령어

  • docker build : 도커 이미지를 빌드
  • docker run : 도커 이미지를 기반으로 컨테이너 실행
  • docker commit : 컨테이너의 상태를 이미지로 저장
  • docker tag : 이미지에 태그 추가