본문 바로가기
Docker/docs

[Docker] [docs] 02. 애플리케이션 컨테이너화

by NJ94 2023. 11. 30.

애플리케이션 컨테이너화

https://docs.docker.com/get-started/02_our_app/

 

Containerize an application

Follow this step-by-step guide to learn how to create and run a containerized application using Docker

docs.docker.com

 

Docker 파일 생성


Window

$ cd \path\to\getting-started-app

$ type nul > Dockerfile

 

Docker 파일 편집


$ vim Dockerfile
# syntax=docker/dockerfile:1

FROM node:18-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000

vim 사용법

  • 일반모드/입력모드/명령모드 세가지 모드가 존재
  • 입력모드로 전환 
    • i 입력 시, 입력 모드로 전환 
  • 명령모드로 전환
    • esc 클릭
  • 저장하기
    • :w
  • 종료하기
    • :q

 

Docker 이미지 빌드


docker build -t getting-started .

 

docker build명령은 Dockerfile을 사용하여 새 이미지를 빌드합니다. Docker가 많은 "레이어"를 다운로드했다는 사실을 눈치채셨을 것입니다. 이는 빌더에게 이미지에서 시작하고 싶다고 지시했기 때문입니다 node:18-alpine. 그러나 컴퓨터에 해당 이미지가 없었기 때문에 Docker는 이미지를 다운로드해야 했습니다.

Docker가 이미지를 다운로드한 후 Dockerfile의 지침이 애플리케이션에 복사되어 yarn애플리케이션의 종속성을 설치하는 데 사용됩니다. 지시문 CMD은 이 이미지에서 컨테이너를 시작할 때 실행할 기본 명령을 지정합니다.

마지막으로 -t플래그는 이미지에 태그를 지정합니다. 사람이 읽을 수 있는 최종 이미지 이름이라고 생각하세요. image라는 이름을 지정했기 때문에 getting-started컨테이너 실행 시 해당 이미지를 참조할 수 있습니다.

.명령 끝에 있는 는 Docker 에게 현재 디렉터리에서 docker build를 찾아야 함을 알려줍니다 .Dockerfile

 

Docker 컨테이너 시작

docker run -dp 127.0.0.1:3000:3000 getting-started

 

Docker 실행중인 컨테이너 상태 확인

docker ps

 

$ docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED         STATUS         PORTS                      NAMES
3cf2f7863c0d   getting-started   "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes   127.0.0.1:3000->3000/tcp   trusting_

 

Docker 전체 컨테이너 상태 확인

docker ps -a

 

$ docker ps -a
CONTAINER ID   IMAGE                             COMMAND                  CREATED         STATUS                      PORTS                      NAMES
3cf2f7863c0d   getting-started                   "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes                127.0.0.1:3000->3000/tcp   trusting_cerf
be8c37858628   docker-sample-project-server      "docker-entrypoint.s…"   24 hours ago    Exited (137) 24 hours ago                              docker-sample-project-server-1
bf1223bb91ba   bindmount-apps-todo-app:latest    "docker-entrypoint.s…"   25 hours ago    Exited (143) 25 hours ago                              exciting_liskov
0815bbe990d3   bindmount-apps-todo-app           "docker-entrypoint.s…"   25 hours ago    Exited (143) 25 hours ago                              bindmount-apps-todo-app-1
5ecb0ae36a0b   mongo:6                           "docker-entrypoint.s…"   25 hours ago    Exited (0) 25 hours ago                                bindmount-apps-todo-database-1
a4c5404383f6   docker/welcome-to-docker:latest   "/docker-entrypoint.…"   47 hours ago    Exited (0) 47 hours ag

 

Docker 컨테이너 상세 정보 확인

docker inspect [name]
$ docker inspect getting-started
[
    {
        "Id": "sha256:ae30ec72e538dc2d154e9e4c830f3424dae67f23cb656c794f42b5767d31cfae",
        "RepoTags": [
            "getting-started:latest"
        ],
        "RepoDigests": [],
        "Parent": "",
        "Comment": "buildkit.dockerfile.v0",
        "Created": "2023-11-30T06:52:35.378387194Z",
        "Container": "",
        "ContainerConfig": {
            "Hostname": "",
            "Domainname": "",
            "User": "",

 

Docker 컨테이너 일시중지

docker pause [name]

 

Docker 컨테이너 중지 해제

docker unpause [name]

 

Docker 컨테이너 종료

docker stop [name]

 

Docker 컨테이너 강제 종료

docker kill [name]

 

Docker 컨테이너 삭제

docker rm [name]