Docker ch 01

hosu·2022년 12월 6일
0

도커 공부하기

목록 보기
1/1

도커 설치하기

Docker Desktop - Docker

위 사이트에 들어가서 각자의 환경에 맞게 설치하고 로그인하면 된다.

컨테이너로 Hello World 실행하기

docker container run diamol/ch02-hello-diamol

다음 명령어를 실행하면 Hello World 컨터에니거 실행된다.

위와 같이 실행이 된다면 성공이다!

위의 명령어는 무엇을 한 것일까? docker container run 명령은 컨테이너로 애플리케이션을 실행하라는 도커 명령이다. 그리고 컨테이너 패키지의 이름은 diamol/ch02-hello-diamol이다.

일단 출력 메세지를 보면 Unable to find image 'diamol/ch02-hello-diamol:latest' locally 이라는 부분은 우리가 이미지를 갖고 있지 않아서 나오는 메시지이다. 그리고 이어지는 부분은 우리가 이미지를 내려받는 과정이라 볼 수 있다.

  • 컴퓨터의 이름 : df8698f48ff9(다 다르다.)
  • 운영체제 종류 : Linux 5.15.49-linuxkit aarch64(각자의 실행 환경)
  • 네트워크 주소 : 172.17.0.2

지금의 과정에서 우리는 도커의 워크플로의 핵심을 볼 수 있다. 먼저 컨테이너에서 실행될 수 있도록 애플리케이션을 패키징하고, 다른 사람이 사용할 수 있도록 공유한 다음 패키지를 내려받은 사람이 애플리케이션을 실행하는 것 우리는 이 과정을 빌드, 공유, 실행이라고 한다.

컨테이너를 원격 컴퓨터처럼 사용하기

한 스크립트 안에서 여러 도구를 사용해 필요한 일을 처리하는 경우를 생각해 보자.

이런 경우에는 특정한 도구가 필요하므로 스크립트 외에 도구를 함께 공유해야 한다. 그러려면 설치, 문서 전달, 도구 전달받아 설치까지 시간이 많이 걸린다. 그러나 도커를 사용하면 도구와 스크립트를 하나의 이미지로 패키징해 추가적인 설치나 설정 작업 없이 실행할 수 있다.

이번에도 docker container run을 사용하지만 터미널 세션으로 조작할 수 있는 대화식 컨테이너를 실행하도록 몇 가지 플래그를 추가한다.

docker container run --interactive --tty diamol/base

interactive 플래그는 컨테이너에 접속된 상태가 된다. 그리고 tty 플래그는 터미널 세션을 통해 컨테이너를 조작하겠다는 의미이다.

이와 같이 / #은 컨테이너 내부에 접속된 터미널 세션이다.

그렇다면 hostname과 date를 통해 내 환경을 확인해보자

새로운 터미널을 열고 현재 실행중인 모든 컨테이너에 대한 정보를 확인해보자

docker container ls

위와 같이 여러가지가 출력이 되는데 눈썰미가 좋다면 지금 출력된 컨테이너 id와 호스트명과 동일하다는 사실을 알 수 있다. 도커는 컨테이너를 생성할때마다 무작위 ID를 생성하는데 이 값중 일부분이 호스트명이 된다.

이제는 docker container 명령어를 알아볼 것이다.

  • docker container top : 실행 중인 프로세스의 목록을 보여 준다.
  • docker container logs : 대상 컨테이너에서 수집된 모든 로그를 출력한다.
  • docker container inspect : 대상 컨테이너의 상세한 정보를 보여 준다.

와 같이 수많은 명령어들이 있다.

ls입력한 터미널은 종료해도 되고 실행 중인 터미널 세션은 exit을 입력하고 나오면 된다.

컨테이너를 사용해 웹 사이트 호스팅하기

이제 docker container ls를 입력하면 나오는 것이 없을 것이다. 그래서 docker container ls --all을 입력하면 보일것이다.

여기서 중요한 두 가지 내용이 있다.

  1. 컨테이너 내부의 애플리케이션이 실행 중이어야 컨테이너의 상태도 실행 중이 된다는 점
  2. 컨테이너가 종료돼도 컨테이너는 사라지지 않는다는 점

그렇기에 나중에 다시 실행하거나 로그를 확인하거나, 파일 시스템에 새로운 파일을 복사하거나 외부로 복사해 올 수 있다.

그렇다면, 컨테이너를 실행하고 백그라운드에서 계속 동작하게 하려면 어떻게 하면 될까? 도커를 사용하는 주 목적은 웹 사이트, 배치 프로세스, 데이터베이스 같은 서버 애플리케이션을 실행하는 것이므로 이러한 형태가 주된 사용 형태일 것이다.

	docker container run --detach --publish 8080:80 diamol/ch02-hello-diamol-web

이 명령을 실행하면 컨테이너 ID만 출련된다. 그리고 종료되지 않고 백그라운드에서 계속 동작한다.

확인해보고 싶다면 docker container ls에서 상태가 Up인지 확인한다.

이 이미지는 아파피 웝 서버와 간단한 HTML페이지를 담고 있다. 이 이미지로 컨테이너를 실행하면 실제 웹 서버를 통해 웹 페이지가 제공된다.

  • --detach : 컨테이너를 백그라운드에서 실행하며 컨테이너 ID를 출력한다.
  • --publish : 컨테이너의 포트를 호스트 컴퓨터에 공개한다.

그후 http://localhost:8080에 접속하면 간단한 웹 페이지가 나온다.

이는 도커의 이식성과 효율성을 그대로 누린다. 웹 개발자는 자신이 작업하는 노트북에서 컨테이너 하나만 실행하면 전체 애플리케이션 스택이 실행된다. 이 점은 운영 팀이 운영 환경에서 여러 물리 서버에 나눠 배치도ㅣㄴ 100개의 컨테이너를 실행해 전체 애플리케이션을 실행할 때도 마찬가지다.

docker container stats

를 통해 실행중인 컨테이너의 상태를 확일할 수 있다.

컨테이너 사용이 끝나면 docker conatiner rm명령에 컨테이너 ID를 지정해 대상 컨테이너를 삭제할 수 있다.

—force 플래그를 사용하면 실행 중인 컨테이너라도 바로 삭제가 가능하다.

모든 컨테이너를 삭제하려면 다음 명령을 사용한다

docker container rm --force $(docker container ls --all --quiet)

위 내용은 길벗 도커 교과서 내용을 따라한 것인다.
링크텍스트

profile
비전공자의 개발자 성장기

0개의 댓글