도커 컴포즈 (1)
포스트
취소

도커 컴포즈 (1)

도커 설치하기

  • 윈도우 11 보안때문에 도커를 그냥 설치하면 설치가 안된다. C:\ProgramData\DockerDesktop 폴더를 지우고 도커 설치파일을 관리자 권한으로 실행하면 된다. 그냥 더블클릭하면 똑같이 또 안되니까 우클릭하고 관리자 권한으로 해야 한다.
  • 뭐 hyper-v나 WSL 같은 선택지는 기본값으로 두고 진행
  • 설치하면 재부팅
  • 도커 데탑 실행 > 동의
  • wsl 업데이트하라고 나오는데, wsl 자체가 똑바로 실행이 안됨
  • 한참 기다려서 오류 메시지 하나 받음 → 나중에 알았는데 저 메시지 뜰 때 키보드 키 아무거나 하나만 누르면 알아서 복구될 수도 있었다. 괜히 복잡하게 건드리지 말고 자동 복구에 맡기는 게 제일 안전함.

    260427-HAE-1-docker-1.png

  • 이리저리 떠돌다가,, 그냥 윈도우 재설치부터 시작하기로 함. 터미널 계속 건드려서 수리해봤자 다음에 또 새로운 거 깔면 또 이럴 것 같음
  • 재설치할 때는,, 꼭 IRST 드라이버를 부팅 USB에 넣어놓기,,, 이거 때문에 재설치 n시간 연장됨,,, 요즘 인텔 노트북은 웬만해선 저 드라이버가 필요한 디스크를 사용하고 있고, 특히나 내 경우에는 윈도우가 하도 망가져서 Gparted로 다 지우고 시작했다보니 드라이버도 없는 상태여서 디스크가 인식이 안됐음
  • 하지만? 재설치 후 도커를 제일 먼저 설치하면 된다. wsl도 설치가 잘된다. 애초에 모든 문제는 wsl이 설치가 안돼서 발생했었음,,,

도커

  • 도커가 해결해주는 가장 눈에 띄는 문제: 내 로컬에선 되는데 배포하면 안되기
    • 환경 자체를 배포할 수 있기 때문에 로컬 세팅으로 인한 실행환경 불일치를 해소할 수 있고 이미지를 쓰니까 용량도 적게 듦
    • 도커 이전의 다른 방법들은 하나같이 좀 문제가 있었음
      1. 가상머신: 프로그램이 너무 뚱뚱하고 OS가 중복설치됨
      2. requirements.docx: 번거로움
  • 도커의 기본 단위는 이미지다. 가상환경을 찍어내는 기본틀임.
  • 이미지를 통해 생성한 가상환경을 컨테이너라고 부름
  • 그럼 이미지는 뭘 쓰냐
    • 보통 익숙한 우분투 리눅스 잘들 쓰죠
    • 알파인 리눅스라는 게 있음. 다른 배포판에 비해 용량이 1/10 정도로 가벼워서 엣지 환경에서 잘 씀
  • 새 환경 만들고 OS 확인하기 - 리눅스

    1
    2
    3
    4
    5
    6
    
      docker run -it --name linux-lab ubuntu:22.04 bash
      cat /etc/os-release
      apt update
      exit  # 컨테이너 종료
      # 다시 컨테이너 실행하기
      docker start -i linux-lab
    

리눅스 기초 명령어

  • pwd : 지금 내 위치. Print Working Directory
  • whoami : 내가 누구게. 현재 사용자 이름 나옴.
  • hostname : 컨테이너 ID 나옴
  • echo "message ${variable}" : 메시지를 터미널에 똑같이 출력함(메아리 뭔말알?)
  • echo $SHELL : 현재 쉘 확인
  • date : 현재 시각 확인. 기본은 UTC 표준시.
  • clear : 화면 지우개. 난 잘 안쓰지만 화면을 깔끔하게 쓰고 싶다면 쓸만함.
  • uname -a : 시스템 정보 확인
  • ls : 폴더 및 파일 구조 확인
    • -l : 자세히 보여주기
    • -a : 숨김 파일 보여주기
    • -h : 읽기 편한 단위로 보여주기
    • -lah : 복합 사용 가능
    • -R : 재귀 탐색. 하위 파일까지 다 조회함. 출력량에 주의

파일 생성 및 내용 보기

  • touch {filename} : 빈 파일 생성
  • echo "message" > {filename} : 파일에 덮어쓰기
  • echo "message" >> {filename} : 파일에 추가하기
  • cat {filename} : 파일 내용 전체 보기
    • cat -n {filename} : 파일 내용 전체 보기, 줄번호 포함
  • head -n {filename} : 파일 앞부분 n줄만 보기
  • tail -n {filename} : 파일 뒷부분 n줄만 보기
  • wc -l {filename} : 줄 수 세기. word count -line.
  • less {filename} : 긴 파일 페이지 단위로 보기. 이동 및 검색 가능

파일과 폴더

  • mkdir -p : 재귀적으로 폴더 생성
  • cp A B : A 파일을 B로 복제함
    • cp -r A B : A 폴더를 B로 그대로 복제함
    • 백업하세요
  • mv A B : A 파일을 B로 옮김 or A 파일의 이름을 B 파일로 바꿈
  • rm {filename} : 파일 삭제. 별도 출력 없음.
    • rm -r {route} : 폴더 삭제. 별도 출력 없음.

검색과 필터링

  • grep : 파일 내용으로 검색을 할거임
    • -i : 대소문자 구분하지 않고 검색
    • -n : 줄 번호 표시
    • -c : 갯수만 출력
    • -v : 검색한 거 빼고 나머지
  • find {folder} -name "*.csv" : 이름으로 파일 찾기
    • find {folder} -name "*.csv" -size +1k : 크기 조건 포함
    • find {folder} -type d : 디렉토리만 찾기
  • command1 | command2 | command3 | ... : 명령어 연속 실행. 이전 명령어의 출력이 다음 명령어의 파라미터로 넘어감. |는 파이프라고 부른다.
  • sort {file_route} : 정렬하기
    • sort -t',' -k2 -n {file_route} : 특정 컬럼(2번째) 기준 정렬

도움말

  • man page: 인터넷 없이도 명령어 매뉴얼을 볼 수 있다
    • man {command} : 명령어의 파라미터 목록과 설명을 보여줌
  • --help : 웬만한 명령어는 다 이거 치면 파라미터 목록 뜬다
  • history : 명령어 사용 이력 보여줌
    • !n : history 기록 중 특정 순번의 명령어 실행
  • alias {nickname}='{command}' : 특정 커맨드 단축키 설정
    • echo "alias {nickname}='{command}'" >> ~/.bashrc : bashrc에 단축키 저장

파일 권한 구조 이해

  • 파일 권한 코드의 의미: 첫 글자를 제외한 나머지를 3비트씩 이진수로 계산하면 3자리 숫자로 나타낼 수 있음.

    아래 예시는 754로 표현할 수 있음

-  r w x  r - x  r - -
│  └─┬─┘  └─┬─┘  └─┬─┘
│    │      │      │
│    │      │      └── 기타(Other): r-- (읽기만)
│    │      └───────── 그룹(Group): r-x (읽기+실행)
│    └──────────────── 소유자(User): rwx (읽기+쓰기+실행)
└───────────────────── 파일 타입: - (일반 파일)
이 기사는 저작권자의 CC BY-NC-ND 4.0 라이센스를 따릅니다.

도커로 블로그 로컬 빌드하기 + 그런데 이제 로컬엔 WSL과 도커만 설치한

도커 컴포즈 (2)