docker 기본명령어

docker run -it node

  • -it는 내부 cli환경으로 실행한다를 의미

docker ps

  • 현재 작업이 진행중인 컨테이너리스트를 볼수있다.
  • 모든 컨테이너를 보여달라는 의미의 -a (docker ps -a)

docker exec -it 컨테이너명 bash

  • 이 컨테이너 내에서 bash shell을 실행한다 를 의미 (컨테이너 내부의 가상의 리눅스 환경에 들어간다)

docker stop $(docker ps -aq) docker system prune -a

  • 전체 컨테이너 없애기
 

섬세한 컨테이너 사용을 위해 dockerfile을 쓴다

FROM node:버젼 # (이미지 생성 과정에서 실행할 명령어) RUN npm install -g http-server # (이미지 내에서 명령어를 실행할( 현 위치로 잡을) 디렉토리 설정 WORKDIR /home/node/app # (컨테이너 실행시 실행할 명령어) CMD ["http-server", "-p", "8080", "./public"] # 이미지 생성 명령어 ( 현 파일과 같은 디렉토리에서) docker build -t {이미지명} # 컨테이너 생성 & 실행 명령어 docker run —name {컨테이너명} -v $(pwd):/home/node/app -p 8080:8080 {이미지명} (-v === volume, pwd === 현위치)
FROM mysql: 버젼 # 이미지 환경변수들 세팅 # 실전에서는 비밀번호 등을 이곳에 입력하지 말것 # 서버의 환경변수 등을 활용 ENV 환경변수명 ENV MYSQL_USER ENV MYSQL_PASSWORD # 도커환경에서 컨테이너 생성시 스크립트를 실행하는 폴더로 # 미리 작성된 스크립트들을 이동 COPY ./scripts/ /docker-entrypoint-initdb.d/ # 이미지 빌드 명령어 (현 파일과 같은 디렉토리에서) docket build -t {이미지명} # 실행 명령어 (터미널에 로그 찍히는것 보기) docker run --name {컨테이너명} -it -p 3306:3306 {이미지명} # 실행 명령어 ( 데몬으로 실행) docker run --name {컨테이너명} -p 3306:3306 -d {이미지명}
FROM python:버젼 # 이미지 생성 과정에서 실행할 명령어 RUN pip3 install flask flask-cors flask-mysql # 이미지 내에서 명령어를 실행할(현 위치로 잡을) 디렉토리 설정 WORKDIR /usr/src/app # 컨테이너 실행시 실행할 명령어 CMD ["python3", "backend.py"] # 이미지 생성 명령어 (현 파일과 같은 디렉토리에서) docker build -t {이미지명} # 컨테이너 생성 & 실행 명령어 docker run --name {컨테이너명} -v $(pwd):/usr/src/app -p 5000:5000 {이미지명}

docker-compose

거시적 설계도

version: '3' services: database: # dockerfile이 있는 위치 build: ./database # 내부에서 개방할 포트 : 외부에서 접근할 포트 ports: - "3306:3306" backend: build: ./backend # 연결할 외부 디렉토리 : 컨테이너 내 디렉토리 volumes: - ./backend:/usr/src/app ports: - "5000:5000" # 환경변수 설정 environment: - DBHOST=database frontend: build: ./frontend # 연결할 외부 디렉토리 : 컨테이너 내 디렉토리 volumes: - ./frontend