cd /home/user/example/dir/
cd ./dir/
현재 위치에 존재하는 dir 디렉토리로 이동cd ../
현재 위치를 기준으로 상위 디렉토리로 이동특정 파일이나 디렉토리를 지정할 때, 이름을 지정해 줘야 하는 경우가 있습니다. 이 때 wild card(*)를 사용하면 원하는 파일을 더 빠르게 탐색하거나 실행시킬 수 있습니다.
ls -l ./*.txt # .txt로 끝나는 모든 파일 목록 출력하기
mkdir
/ 디렉토리 생성하기mkdir ./test # 현재 경로에 test 디렉토리 생성하기
mkdir ./test/test2 # test 디렉토리 안에 test2 디렉토리 생성하기
mkdir /home/ubuntu/test3 # /home/user 경로에 test3 디렉토리 생성하기
pwd
/ 현재 경로 확인하기pwd # 현재 경로 확인
cd
/ 경로 이동하기cd ./test # 현재 경로의 test 디렉토리로 이동
cd ./test/test2 # test 디렉토리 안에 test2 디렉토리로 이동
cd ../test3 # 상위 디렉토리의 test3 디렉토리로 이동
cd /home/user/test4 # /home/user/test4 디렉토리로 이동
ls
/ 파일 목록 보기ls # 현재 위치에 파일 목록 보기
ls ./test # test 경로에 파일 목록 보기
ls -l # 현재 위치에 파일 목록을 더 자세히 보기
ls -a # 현재 위치에 숨겨짐 파일을 포함해서 보기
ls -al # 현재 위치에 숨겨진 파일을 포함해서 목록을 더 자세히 보기
# 이외에도 다양한 옵션들이 존재하며, ls --help 명령어로 확인 가능합니다.
touch
/ 파일 생성하기touch test.txt # test.txt 파일 생성하기
cp
/ 파일 복사하기cp test.txt test_copy.txt # test.txt 파일을 test_copy.txt라는 이름으로 복사하기
cp -r directory directory_copy # 폴더를 복사할 경우 -r 옵션 사용
mv
/ 파일 이동하기mv ./directory1/test.txt ./ # directory1 경로의 test.txt 파일을 현재 경로로 이동
# mv는 파일의 이름을 변경할 때도 사용됩니다.
mv test.txt text2.txt # test.txt 파일의 이름을 test2.txt로 변경
rm
/ 파일 삭제하기rm test.txt # test.txt 파일 삭제
rm -r directory # 디렉토리를 삭제하기 위해서는 -r 옵션을 붙여줘야 합니다.
touch test
: test라는 이름의 파일 생성touch .test
: .test라는 이름의 숨김 파일 생성ls
명령어의 -a
옵션으로 확인할 수 있습니다.i
: 현재 위치에서 insert mode 진입a
: 현재 위치에서 커서를 한 칸 앞으로 이동 후 insert mode 진입A
: 현재 위치에서 가장 마지막 텍스트로 이동 한 후 insert mode 진입o
: 현재 위치에서 한칸 개행 한 후 insert mode 진입esc
: insert mode 나가기u
: undo (ctrl + z와 동일)ctrl + r
: redogg
: 커서를 가장 처음으로 옮김G
: 커서를 마지막 줄로 옮김dd
: line 잘라내기yy
: line 복사p
: 붙여넣기:se nu
: 라인 줄 표시:숫자
: 숫자 라인으로 이동 (ex - :10
: 10번째 라인으로 이동)/word
: word라는 단어를 검색/\cword
: 대소문자를 구분하지 않고 word라는 단어를 검색 (ex - /\cword)n
: 다음 단어 검색N
: 이전 단어 검색:w
: 저장 :q
: 나가기 :wq
: 저장 하고 나가기 :q!
: 수정내역이 있어도 저장하지 않고 강제로 나가기cat
/ 파일 내용 보기cat test.txt # test.txt 파일의 내용 보기
head
/ 파일의 시작 부분 보기head test.txt # test.txt 파일의 첫 10줄 내용 보기
head -50 test.txt # text.txt 파일의 첫 50줄 내용 보기
tail
/ 파일의 끝 부분 보기grep
/ 특정 문자열이 포함 된 파일 찾기grep word ./* # 현재 경로의 모든 파일을 대상으로 word라는 단어가 포함된 파일 찾기
grep word ./* -r # -r 옵션을 붙이면 디렉토리 내부까지 모두 탐색합니다.
find
/ 특정 조건의 파일 찾기find / -name "*.txt" # 최상위 경로에서 .txt로 끝나는 파일 혹은 디렉토리 검색
find ./ -type d # 현재 경로에서 모든 디렉토리 검색
find ./ -type f -name "*.txt" # 현재 경로에서 .txt로 끝나는 파일 검색
history
/ 명령어 기록 출력하기history # 지금까지 사용한 명령어 출력
htop
/ 리소스 사용량 확인하기htop # 현재 사용중인 리소스 확인하기
df
/ 남은 디스크 용량 확인하기df -h # 디스크 여유 공간 확인하기
du
/ 특정 파일 혹은 폴더가 사용중인 디스크 용량 확인하기sudo apt install docker.io -y
# 만약 아래와 같은 에러가 발생한다면
# E: Package 'docker.io' has no installation candidate
# sudo apt update 명령어 실행 후 docker 패키지를 다시 설치해주세요
sudo docker --version # 도커 버전이 출력되는지 확인합니다.
# Docker version 20.10.12, build 20.10.12-0ubuntu2~20.04.1 - 정상
# command not found: docker 와 같은 문구가 출력될 경우 docker가 설치되었는지 확인해야 합니다.
sudo docker run -d -p 80:80 httpd:latest
# run : 이미지를 사용해 컨테이너를 실행시킵니다.
# -d : 컨테이너를 데몬(백그라운드)으로 실행시킵니다.
# 80:80 : 80번 포트로 접속했을 때 컨테이너에 접근할 수 있도록 포트포워딩 설정을 해줍니다.
# httpd:latest : httpd의 가장 최신 이미지를 사용해 컨테이너를 생성합니다.
sudo docker ps # 실행중인 컨테이너 목록 확인하기
# CONTAINER ID : 컨테이너가 가지고 있는 고유한 id
# IMAGE : 컨테이너가 생성될 때 사용된 이미지
# COMMAND : 컨테이너가 생성될 때 실행되는 명령어
# CREATED : 생성 후 경과 시간
# STATUS : 컨테이너 상태
# PORTS : 사용중인 포트
sudo docker ps -a
# -a : 중지된 컨테이너 목록까지 포함해서 모두 확인하기
sudo docker images
# REPOSITORY : 이미지 저장소 이름
# TAG : 이미지 버전
# IMAGE ID : 이미지의 고유한 id
# CREATED : 이미지 생성일(마지막 업데이트 일)
# SIZE : 이미지 용량
sudo docker ps -a # docker에 존재하는 컨테이너 목록을 확인합니다.
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 54445308314d httpd:latest "httpd-foreground" 23 hours ago Up 23 hours 0.0.0.0:80->80/tcp, :::80->80/tcp sweet_engelbart
sudo docker rm -f $container_id # 컨테이너의 실행중 여부와 관계 없이 강제로 삭제합니다.
version: '3.8' # docker-compose.yml에 사용될 문법 버전을 정의합니다.
services:
example: # 서비스 이름을 지정합니다. 서비스 이름은 컨테이너끼리 통신할 때 사용됩니다.
container_name: example # 컨테이너 이름을 지정합니다.
image: 'httpd:latest' # 컨테이너를 생성할 때 사용될 이미지를 지정합니다.
restart: always # 컨테이너가 종료됐을 때 다시 실행시켜 줍니다.
# docker compose 명령어는 docker-compose.yml 파일이 존재하는 자리에서 실행해야 합니다.
sudo docker compose up -d
# up : docker-compose.yml 파일을 읽어 정의된 서비스들을 실행시킵니다.
# -d : 컨테이너를 데몬(백그라운드)으로 실행시킵니다.
version: '3.8' # docker-compose.yml에 사용될 문법 버전을 정의합니다.
services:
example: # 서비스 이름을 지정합니다. 서비스 이름은 컨테이너끼리 통신할 때 사용됩니다.
container_name: example # 컨테이너 이름을 지정합니다.
image: 'httpd:latest' # 컨테이너를 생성할 때 사용될 이미지를 지정합니다.
ports: # 포트포워딩을 설정해줍니다.
- 80:80 # 외부에서 80 포트로 접속했을 때 컨테이너의 80 포트로 연결해줍니다.
restart: always # 컨테이너가 종료됐을 때 다시 실행시켜 줍니다.
sudo docker compose up -d
version: '3.8' # docker-compose.yml에 사용될 문법 버전을 정의합니다.
services:
example: # 서비스 이름을 지정합니다. 서비스 이름은 컨테이너끼리 통신할 때 사용됩니다.
container_name: example # 컨테이너 이름을 지정합니다.
image: 'httpd:latest' # 컨테이너를 생성할 때 사용될 이미지를 지정합니다.
ports: # 포트포워딩을 설정해줍니다.
- 80:80 # 외부에서 80 포트로 접속했을 때 컨테이너의 80 포트로 연결해줍니다.
volumes: # volume을 성정해줍니다.
- ./example_http_code/:/usr/local/apache2/htdocs/ # 정의한 volume의 mount할 경로를 지정합니다.
restart: always # 컨테이너가 종료됐을 때 다시 실행시켜 줍니다.
version: '3.8' # docker-compose.yml에 사용될 문법 버전을 정의합니다.
volumes:
example_http_code: {} # docker volume을 정의합니다.
services:
example: # 서비스 이름을 지정합니다. 서비스 이름은 컨테이너끼리 통신할 때 사용됩니다.
container_name: example # 컨테이너 이름을 지정합니다.
image: 'httpd:latest' # 컨테이너를 생성할 때 사용될 이미지를 지정합니다.
ports: # 포트포워딩을 설정해줍니다.
- 80:80 # 외부에서 80 포트로 접속했을 때 컨테이너의 80 포트로 연결해줍니다.
volumes: # volume을 성정해줍니다.
- example_http_code:/usr/local/apache2/htdocs/ # 정의한 volume의 mount할 경로를 지정합니다.
restart: always # 컨테이너가 종료됐을 때 다시 실행시켜 줍니다.
# 빌드할 때 사용할 이미지를 지정해줍니다.
FROM httpd:latest
# 현재 경로에 존재하는 index.html 파일을 컨테이너 내부로 복사합니다.
COPY ./index.html /usr/local/apache2/htdocs/index.html
version: '3.8' # docker-compose.yml에 사용될 문법 버전을 정의합니다.
services:
example: # 서비스 이름을 지정합니다. 서비스 이름은 컨테이너끼리 통신할 때 사용됩니다.
container_name: example # 컨테이너 이름을 지정합니다.
build: . # 현재 경로에 있는 Dockerfile을 사용해 이미지를 생성합니다.
ports: # 포트포워딩을 설정해줍니다.
- 80:80 # 외부에서 80 포트로 접속했을 때 컨테이너의 80 포트로 연결해줍니다.
restart: always # 컨테이너가 종료됐을 때 다시 실행시켜 줍니다.
FROM python:3.9.15
# .pyc 파일을 생성하지 않도록 설정합니다.
ENV PYTHONDONTWRITEBYTECODE 1
# 파이썬 로그가 버퍼링 없이 즉각적으로 출력하도록 설정합니다.
ENV PYTHONUNBUFFERED 1
# /app/ 디렉토리를 생성합니다.
RUN mkdir /app/
# /app/ 경로를 작업 디렉토리로 설정합니다.
WORKDIR /app/
# main.py 파일을 /app/ 경로로 복사합니다.
COPY ./main.py /app/
version: '3.8' # docker-compose.yml에 사용될 문법 버전을 정의합니다.
services:
example: # 서비스 이름을 지정합니다. 서비스 이름은 컨테이너끼리 통신할 때 사용됩니다.
container_name: example # 컨테이너 이름을 지정합니다.
build: . # 현재 경로에 있는 Dockerfile을 사용해 이미지를 생성합니다.
entrypoint: sh -c "python3 main.py" # 작업 디렉토리에 존재하는 main.py 파일을 실행시킵니다.
restart: always # 컨테이너가 종료됐을 때 다시 실행시켜 줍니다.
version: '3.8'
services:
example1:
container_name: example1
image: 'httpd:latest'
ports:
- 80:80
restart: always
example2: # 서비스 이름이 동일하면 컨테이너가 정상적으로 생성되지 않을 수 있습니다.
container_name: example2 # 컨테이너 이름이 동일하면 컨테이너 생성 시 에러가 발생합니다.
build: .
entrypoint: sh -c "python3 main.py"
restart: always