컨테이너: 독립적인 컴퓨터 한 개. 각 컨테이너는 각각의 작은 컴퓨터.
이미지: 컨테이너에서 실행되는 프로그램. //추가 필요
https://docs.docker.com/desktop/setup/install/mac-install/
$ docker pull nginx // 버전 미기재시, latest 버전으로 pull
$ docker image ls //다운로드 되어있는 이미지 list
$ docker image rm (이미지ID) //이미지 삭제
$ docker run -d nginx //nginx 실행. -d는 백그라운드에서 실행 의미
$ docker run -p (호스트 포트):(컨테이너 포트) nginx // 호스트-컨테이너 포트 연결
$ docker ps -a //실행중인 프로세스 확인. -a는 종료된 컨테이너도 조회
$ docker stop (컨테이너ID) //실행중인 컨테이너 종료
run: 이미지 설치(로컬에 없을시) + 실행 한 번에.docker rm의 경우, 실행중인 프로세스는 삭제 불가. 강제 삭제하려면 -f 키워드 이용.필자는 vscode 이용하여 작성.
Dockerfile 이름 그대로 파일 생성 후 작성.FROM [이미지 이름] //예시) FROM ubuntu
$ docker build -t (원하는 이미지 이름) . //Dockerfile 있는 경로 적어줘야함. 해당 폴더일시 .
$ docker build -t mytestImage . //이미지 생성
$ docker run -d mytestImage //이미지 기반한 컨테이너 실행
$ docker exec -it (컨테이너ID) bash //컨테이너 들어가기
COPY: 호스트 컴퓨터에 있는 파일 복사 -> 컨테이너로 전달
COPY [호스트의 복사할 파일 경로] [컨테이너 도착 경로]
//예시
COPY hostFile.txt /cont.txt
ENTRYPOINT : 컨테이너 생성되어 최초 실행 때 수행되는 명령어
RUN : 이미지 생성 과정에서 필요햔 명령어 실행.
docker compose 에서 컨테이너를 서비스라고 부름.
services:
my-db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: (비밀번호)
volumes:
- ./mysql_data:/var/lib/mysql
ports:
- 3306:3306
my-cache-server:
image: redis
ports:
- 6379:6379
services : 여러 개의 서비스 정의하겠다.
my-db: 해당 서비스 이름 짓기.
environment: 환경 변수 설정
volumes : 볼륨 설정
ports : 포트 연결
$ docker compose up -d //run 처럼, -d 붙여줘야 백그라운드 실행
compose.yml 경로에서 실행. dockerfile 실행 때는 경로 적어줬지만, compose는 경로 안써줌.$ docker compose down //종료 + 삭제