애플리케이션 컨테이너화
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]
'Docker > docs' 카테고리의 다른 글
[Docker] [docs] 05. DB 유지 (볼륨) (0) | 2023.12.05 |
---|---|
[Docker] [docs] 04. 애플리케이션 공유, Docker Hub (0) | 2023.12.04 |
[Docker] [docs] 03. 애플리케이션 업데이트, 컨테이너 빌드 (0) | 2023.12.04 |
[Docker] [docs] 01. get-stated (0) | 2023.11.30 |
[Docker][docs] 00.Docker Guide (0) | 2023.11.28 |