도커 설치하기
- 윈도우 11 보안때문에 도커를 그냥 설치하면 설치가 안된다.
C:\ProgramData\DockerDesktop폴더를 지우고 도커 설치파일을 관리자 권한으로 실행하면 된다. 그냥 더블클릭하면 똑같이 또 안되니까 우클릭하고 관리자 권한으로 해야 한다. - 뭐 hyper-v나 WSL 같은 선택지는 기본값으로 두고 진행
- 설치하면 재부팅
- 도커 데탑 실행 > 동의
- wsl 업데이트하라고 나오는데, wsl 자체가 똑바로 실행이 안됨
한참 기다려서 오류 메시지 하나 받음 → 나중에 알았는데 저 메시지 뜰 때 키보드 키 아무거나 하나만 누르면 알아서 복구될 수도 있었다. 괜히 복잡하게 건드리지 말고 자동 복구에 맡기는 게 제일 안전함.
- 이리저리 떠돌다가,, 그냥 윈도우 재설치부터 시작하기로 함. 터미널 계속 건드려서 수리해봤자 다음에 또 새로운 거 깔면 또 이럴 것 같음
- 재설치할 때는,, 꼭 IRST 드라이버를 부팅 USB에 넣어놓기,,, 이거 때문에 재설치 n시간 연장됨,,, 요즘 인텔 노트북은 웬만해선 저 드라이버가 필요한 디스크를 사용하고 있고, 특히나 내 경우에는 윈도우가 하도 망가져서 Gparted로 다 지우고 시작했다보니 드라이버도 없는 상태여서 디스크가 인식이 안됐음
- 하지만? 재설치 후 도커를 제일 먼저 설치하면 된다. wsl도 설치가 잘된다. 애초에 모든 문제는 wsl이 설치가 안돼서 발생했었음,,,
도커
- 도커가 해결해주는 가장 눈에 띄는 문제: 내 로컬에선 되는데 배포하면 안되기
- 환경 자체를 배포할 수 있기 때문에 로컬 세팅으로 인한 실행환경 불일치를 해소할 수 있고 이미지를 쓰니까 용량도 적게 듦
- 도커 이전의 다른 방법들은 하나같이 좀 문제가 있었음
- 가상머신: 프로그램이 너무 뚱뚱하고 OS가 중복설치됨
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 Directorywhoami: 내가 누구게. 현재 사용자 이름 나옴.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 (읽기+쓰기+실행)
└───────────────────── 파일 타입: - (일반 파일)
