이미지와 컨테이너의 차이를 알아보고, 이미지 조회, 이미지 삭제, 컨테이너 실행, 컨테이너 조회하는 명령어를 알아보면서 컨테이너를 기동해 보도록 하겠습니다.
이미지와 컨테이너의 차이
간단히 말해 이미지는 빌드 타임의 구조이고 컨테이너는 런타임 구조입니다. 이미지를 프로그램이 정지되어 있는 상태의 템플릿이라고 생각해 보세요. 그리고 반대로 컨테이너는 프로그램이 실행 중인 이미지로 비유할 수 있습니다.
객체 지향 프로그래밍 언어의 클래스와 비유해도 좋은 예가 됩니다. 이미지는 클래스와 같고, 컨테이너는 해당 클래스에서 생성된 객체와 같습니다.
컨테이너 기동 따라하기
이미지 조회
docker image ls
docker image ls 로 로컬에 있는 이미지를 조회해 보겠습니다.
현재 한 개의 이미지가 존재하지만 dock hub에 올라가 있는 이미지로 실행하고 싶으므로 로컬 사본을 삭제하겠습니다.
이미지 삭제
docker image rm 이미지명
docker image rm 명령어로 이미지를 삭제하였습니다.
컨테이너 실행
컨터이너를 실행하는 커맨드는 docker container run 입니다.
docker container run -d --name web -p 3000:3000 duddy/dc:docker-test1
여기서 -d 플래그는 터미널에서 분리된 백그라운드에서 이 컨테이너를 실행하라는 의미입니다. --name 플래그로 web이라고 주고 있습니다.
-p 로 포트 매핑을 설정할 수 있습니다. -p 3000:3000 이라고 기술하면 처음 8000 현재 로컬 컴퓨터의 포트이고 콜론(:)다음의 3000은 앱이 컨테이너에서 수신 대기하는 포트입니다.
컨테이너의 수신 대기 포트를 3000이라고 준 이유는 컨테이너에서 기동 할 앱의 포트가 3000에서 작동하기 때문입니다. 아래 코드가 컨테이너에서 기동 되는 앱이고 3000 포트에서 동작하는 걸 확인할 수 있습니다.
포트 다음에 컨테이너 기동을 이미지 이름을 적어주고 있습니다. duddy/dc:docker-test1 이라고 적었는데, 이미지 앞에 다른 레지스트리의 URL을 붙이지 않는다면 Docker는 기본적으로 Docker Hub를 의미한다고 받아들입니다.
실행 커맨드에 대해 알아봤으니 실행시켜 보겠습니다
로그를 보면 로컬에서 찾을 수 없다는 메시지가 나오고, docker hub에서 이미지를 가져오는 걸 알 수 있습니다. 마지막에 나오는 긴 문자열은 실행 중인 컨테이너 아이디입니다.
컨테이너 조회
docker container ls
docker container ls로 컨테이너를 조회해 보겠습니다.
해당 컨테이너 ID의 짧은 버전을 확인해 볼 수 있습니다. 그리고 그 컨테이너가 어떤 이미지를 베이스로 하고 있는지 알 수 있습니다. PORTS를 보면 3000 -> 3000으로 매핑된다는 것도 확인해 볼 수 있습니다.
컨테이너가 실행 중이니 컨테이너의 웹서버에 접속해 보겠습니다.
컨테이너에서 실행되고 있는 웹 프로그램에 잘 접속이 되네요!!
여기까지 읽어주셔서 감사합니다.
'Container > Docker' 카테고리의 다른 글
[Docker] 도커, Layered File System 이해하기 (0) | 2022.04.11 |
---|---|
[Docker] 컨테이너 조회, 시작, 정지, 삭제, 컨테이너 터미널 연결 하기 (0) | 2022.03.31 |
[Docker] docker hub 컨테이너 등록하기 (0) | 2022.03.29 |
[Docker] 컨테이너화 하기(컨테이너 만들기) (0) | 2022.03.28 |
[Docker] 로컬 pc에 Docker Desktop 설치 하기(feat 리눅스 커널 업데이트) (0) | 2022.03.27 |
최근댓글