도커는 가상화 소프트웨어 플랫폼이다. 도커는 컨테이너 환경에서 독립적으로 애플리케이션을 실행할 수 있도록 컨테이너를 만들고 관리하는 것을 도와주는 도구이다. 기존의 가상화 방식인 OS 가상화가 아닌 프로세스를 격리하는 방식으로 동작한다. 기본 Host OS(Linux 기반의 커널)로 실행되므로 가볍고 빠르다. 도커에 가장 핵심되는 개념인 컨테이너와 이미지를 알아보자.
도커는 컨테이너라는 개념의 단위로 애플리케이션을 실행시킨다. 서로 독립적인 환경이여서 독립적으로 실행된다.
컨테이너 실행에 필요한 파일과 설정을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않는다. 컨테이너는 이미지를 실행한 상태이다. 같은 이미지에서 여러 개의 컨테이너를 만들 수 있다. 이미지를 Docker hub에 등록하거나 Docker Registry 저장소를 직접 만들어 관리할 수 있다.
실행중인 컨테이너 확인
docker ps
컨테이너 생성
docker create [image-name]
컨테이너 실행
docker start [container-id]
컨테이너 생성 및 실행
docker run -p [host-port]:[container-port] [image-name]
※-p로 포트포워딩을 해줘야한다
컨테이너 종료
docker stop [container-id]
컨테이너 삭제
docker rm [container-id]
컨테이너 접속
docker exec -it [container-id] /bin/bash
※-it는 STDIN 표준 입출력을 열고 가상 tty (pseudo-TTY) 를 통해 접속하겠다는 의미이다.
보유중인 이미지 확인
docker images
이미지 삭제
docker image rm [container-name]
도커파일은 docker 에서 이미지를 생성하기 위한 용도로 작성하는 파일이다.
예시
FROM node:lts
WORKDIR /app
ADD . /app
EXPOSE 80
CMD ["node", "app.js"]
1.FROM
베이스가될 이미지를 가져오는 지시어이다. 예시에선 노드 버전 장기적 지원(LTS)의 공식 Docker 이미지를 가져온다.
2.WORKDIR
작업 디렉토리를 설정하는 지시어이다.cd app이라고 생각하면 된다.
3.ADD
host에 있는 파일이나 외부에 있는 파일을 컨테이너로 복사하는 지시어이다. 예시에선 .(현재 디렉토리)를 /app 디렉토리에 추가한다.
4.EXPOSE
컨테이너가 실행될 때 port를 정하는 지시어이다. 예시에선 80 포트에 tcp를 사용한다.udp를 사용하고 싶으면 80/udp라고 명시하면 된다.
5.CMD
컨테이너가 시작될 때 실행할 커맨드를 지정하는 지시어이다. 예시에선 컨테이너가 동작하면 node app.js라는 명령어가 실행되어 app.js파일을 실행시킨다고 보면된다.
이제 이 도커파일을 토대로 이미지를 빌드하면된다.
docker build -t [image-name]:[tag] .
빌드하고 docker images로 확인해보면 image가 추가되어있다.
좋은 글 감사합니다 ^^