Docker | Docker 시작하기

Jihun Kim·2021년 9월 16일
1

Docker

목록 보기
1/3
post-thumbnail

Docker란?

  • 컨테이너, 이미지로 구성되어 있다.

1. 컨테이너(container)

  • app + linux

2. Images

  • Images는 os 설치 파일이다.
  • 어디에서나 docker만 설치되어 있으면 앱을 실행할 수 있다.

Docker를 사용하는 이유

  • 확장이 쉽다.(docker run <image_name>)
  • 내리기 쉽다.(docker kill <container_id>)

Docker를 사용하려면?

  • docker 명령어, 운영 방법을 알아야 한다.
  • 서버에 docker를 설치해 사용한다.
  • image 파일을 만들어 주어야 한다.
    👉 서버 세팅과 애플리케이션 띄우기를 반복할 수 있다.

⚡ 이러한 러닝 커브가 있기 때문에 빠르고 손쉬운 배포는 아니다.

Docker로 nginx(container) 띄우기

  • docker가 잘 설치되었는지 혹은 잘 실행되었는지 테스트 할 때 아래 명령어를 사용한다.
docker ps
  1. nginx 실행하기
  • 아래와 같이 작성하면 nginx로 접근할 수 없다.
docker run nginx
  • 아래와 같이 -p 뒤에 포트번호를 입력해야 한다.
docker run -p <local port 번호>:<docker port 번호> nginx
docker run -p 80:80 nginx

👉 컨테이너에서 80 포트로 요청 들어온 것을 docker의 80 포트로 보내준다는 뜻

👉 잘 실행되고 있는지 확인해 보려면 웹사이트를 통해 localhost(127.0.0.1)로 들어가 보면 된다.

👉 nginx를 끄려면 ctrl+c 또는 터미널 닫기

  • 포트번호 변경해 접근하기
docker run -p 8001:80 nginx

👉 이렇게 포트 번호를 바꿨다면 localhost에 접속시 포트 번호를 뒤에 "localhost:8001"로 명시해 주어야 한다.(기본 포트는 80이기 때문에 80으로 접근시에는 포트 번호를 명시하지 않아도 된다.)

터미널을 종료해도 nginx가 실행되도록 하려면?

  • daemon 형태로 띄워야 한다.
docker run -d -p 80:80 nginx

👉 그러면 아래와 같이 뜬다.

2e452a5ca8e911df17012df8e514f4aa743ed61dba49dc1ff87d4a8e8013b9fa

👉 그리고 아래의 명령어를 실행해 보면

docker ps

👉 아래와 같이 nginx가 실행되고 있는 것을 확인할 수 있다.

CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS                               NAMES
2e452a5ca8e9   nginx     "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, :::80->80/tcp   magical_robinson
  • nginx image가 잘 받아졌는지 확인하기
docker images

👉 아래와 같이 images가 뜬다.

REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    ad4c705f24d3   6 days ago   133MB
  • image를 이용해 컨테이너 하나 더 띄워보고 확인해 보면 잘 띄워진다. 이는 "docker ps" 명령어로 확인해 볼 수 있다.

docker nginx 내리기

  1. docker container 내리기
  • docker를 무한히 띄우면 안되기 때문에 container를 내리고 싶을 때 사용
  • container id를 이용해 내릴 수 있다.
docker kill <container_id>

Docker 활용하기

  • images를 많이 생성하면 디스크가 꽉 차기 때문에 지워야 한다!
  • container를 지우더라도 images가 남아있기 때문에 지워야 한다.

Images 지우기

  • 아래의 명령어로 지울 수 있다.
docker rmi nginx

👉 하지만 그냥 지우면 에러가 난다.

  • 아래의 명령어로 지운 컨테이너들을 포함해 모두 볼 수 있다.
docker container ls -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                            PORTS     NAMES
6740bc03d939   nginx     "/docker-entrypoint.…"   2 minutes ago    Exited (137) About a minute ago             objective_lalande
10222122e826   nginx     "/docker-entrypoint.…"   20 minutes ago   Exited (137) 14 minutes ago                 magical_liskov
2e452a5ca8e9   nginx     "/docker-entrypoint.…"   26 minutes ago   Exited (137) 15 minutes ago                 magical_robinson
b6a8ef4260f7   nginx     "/docker-entrypoint.…"   29 minutes ago   Exited (0) 27 minutes ago                   festive_tesla
2062e30f103e   nginx     "/docker-entrypoint.…"   32 minutes ago   Exited (0) 29 minutes ago                   hopeful_kapitsa
b8178816314c   nginx     "/docker-entrypoint.…"   37 minutes ago   Exited (0) 35 minutes ago                   wizardly_knuth
ada7b7bb0fe6   nginx     "/docker-entrypoint.…"   44 minutes ago   Exited (0) 44 minutes ago                   jovial_goldwasser

👉 지운 container들도 아직 남아 있다.

  • 이제 container를 지운다.
    👉 위의 container들 중 가장 위의 것을 지운다.
docker container rm 6740bc03d939
  • 이렇게 container들을 모두 삭제하고 나면 images를 지울 수 있다.
docker rmi nginx

👉 아래와 같이 이미지가 삭제된다.

Untagged: nginx:latest
Untagged: nginx@sha256:853b221d3341add7aaadf5f81dd088ea943ab9c918766e295321294b035f3f3e
Deleted: sha256:ad4c705f24d392b982b2f0747704b1c5162e45674294d5640cca7076eba2865d
Deleted: sha256:cf45bd1acd3159a35178bfe8a63f910f010990175050ea6c8c333ba3afaf5123
Deleted: sha256:a9e7419d7f7c4fe55c85ce08c4f0a8b45abe9b714aa19880f553859797e0332c
Deleted: sha256:13184aa93ccd585fade03704e048828c29eed86090e7399b208edbe022aaf563
Deleted: sha256:3161f310d154031dbd57f90c07715335a25a31bcf20a4abf3e040ab86bcac633
Deleted: sha256:88f95677408c5f02b15064ad1f41a2c74e40e1800cd3536f8fb45b9e6939704b
Deleted: sha256:d000633a56813933cb0ac5ee3246cf7a4c0205db6290018a169d7cb096581046

다시 이미지 다운 받기

  1. 이미지가 없는 상태에서 아래 명령어를 친다.
docker run nginx

👉 그러면 이미지가 없다고 하면서 아래와 같이 images를 다운 받는다.

Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
...

👉 이렇게만 하면 nginx에 접근할 수 없으므로 daemon으로 접근해 포트 설정을 해야 한다.

🔦 docker 실행 순서정리

  1. image 생성
docker run nginx
  1. daemon으로 nginx 실행(conatiner 생성)
docker run -d -p <local 포트번호>:<nginx 포트번호> nginx
  1. container 종료
docker kill <conatiner_id>
  1. container 삭제(반드시 종료 후 삭제해야 한다.)
    👉 container를 삭제해야 image를 삭제할 수 있다.
docker rm <conatiner_id>
  1. image 삭제
docker rmi nginx
profile
쿄쿄

0개의 댓글