컨테이너와 이미지 동작
실행 중인 컨테이너는 실제로 그렇게 크지 않다.
이유는 이미지 위에 작은 부가 레이어인 컨테이너 레이어를 쌓아 구동하기 때문이다.
하나의 이미지로 컨테이너를 10개를 구동한다고 가정하면, 이미지는 모든 컨테이너가 공유하고 그 위에 읽기쓰기가 가능한 얇은 컨테이너 레이어만 10개가 얹힌 10개 컨테이너가 구동되는 것이다.
로컬 호스트 머신과 실행 중인 컨테이너 간 데이터 통신 방법
주의할 것은 실행 중인 컨테이너로 데이터를 복사할 수 있다고 해서 코드 변경이나 추가를 반영하는 것은 그리 좋은 생각은 아니다.
보통은 컨테이너 속 로그파일을 호스트 머신으로 가져올 때 쓰게 된다.
로컬 프로젝트에 폴더와 파일을 만듦
컨테이너를 구동하고 컨테이너 속으로 파일을 복사한다
이때, 도커는 당연히 컨테이너 이름을 알아야 특정지을 수 있다.
그렇다면 파일이 제대로 복사되었는지 확인을 해보자
파일을 삭제한다.
파일이 정상적으로 복사됐기에 다시 역으로 복사도 됐다.
이름과 태그
이미지 빌드 시 -t 옵션으로 이름을 부여할 수 있다.
이름은 "이름 : 태그 " 로 구성되어 있다.
"이름"은 범용적인 단어를 사용할 것이기에 중복되는 경우가 많을 것이다.
"태그"는 이름이라는 큰 범주에서 하나의 이미지를 특정하기 위해 주로 사용된다.
도커허브에서 node 살펴보기
이미지 공유 방법
이미지를 공유하는 방법에는 두가지가 있다.
- 하나는 Dockerfile과 그에 맞는 소스코드를 받는 방법
- 다른 하나는 이전과 같이 빌드되서 완성된 이미지를 받는 방법이다.
첫 번째 방법으로 도커 노드를 깃허브에서 소스코드를 받아 Dockerfile로 이미지 빌드해보기
코드를 받았다면, 받은 파일 속에 Dockerfile 파일이 존재한다.
Dockerfile방식 이미지 공유 방식은 이미지에 들어가야 하는 모든 주변 코드와 폴더 구조도 필요로 한다.
반면에 이미지 공유 방식은 이미지를 다운로드하기만 하면, 즉시 컨테이너를 실행할 수 있다.
빌드할 필요가 없고, 추가 코드나 주변 폴더도 필요하지 않다. 이미 모든 것이 이미지에 포함되어 있기 때문이다.
이러한 이점으로 주로 완성된 이미지를 공유하는 것이 일반적이다.
DockerHub에 이미지 푸시하기
완성된 이미지를 공유하는 대표적인 방법
도커에서 이미지 공유는 도커의 핵심 기능이다. 도커를 사용하는 이유는 종속성 설치나 별도의 환경설정 없이 컨테이너를 실행할 수 있는 것이다. 거기에 필수적인 것이 이미지 공유이다.
이미지 공유는 중요하기 때문에 도커는 이미지 공유를 위해 내장된 명령어가 있다.
도커 허브에 이미지 공유하는 방식은 두 가지가 있다.
공유 저장소, 개인 저장소 개인 저장소는 무료 사용자 기준 1개만 제공한다.
도커 허브에 접속해 가입 후 저장소 생성하기
도커 허브에 푸시하는 방법은 간단하다. 푸시하고자하는 로컬 이미지 이름을 위와 같이 맞춰주면 된다.
만약 이미 완성된 이미지를 푸시하고 싶다면 아래와 같은 방법으로 이름을 변경해주면 된다.
여기서 주의깊에 볼 것은 기존 이미지를 복제본을 생성한다는 것이다.
정상적으로 올라간 것을 볼 수 있다.
만약 아래와 같이 업로드가 거부됐다면, 도커허브에 로그인을 안한 것이다.
저장소에 푸시할 수 있는 자는 저장소 주인만 푸시가 된다.
로그인을 했다면 정상적으로 푸시할 수 있다.
이전에 이미 푸시를 헀다면 변경된 부분만 푸시를 한다.
따라서 위 처럼 변경되지 않은 레이어는 푸시가 안된 것을 볼 수 있다.
도커 허브에서 가져오기
공개 저장소로 올렸으니 로그아웃을 해야 완전히 정상적으로 받아지는 지 테스트 할 수 있다.
PULL로 가져온 이미지는 도커허브에 올라간 이미지 중 항상 최신 버전을 가져온다.
사실 pull을 하지 않아도 컨테이너를 구동 시킬 수 있다.
이유는 도커는 로컬에서 찾지 못하면 도커 허브에서 찾기 때문이다.
바꿔말하면, 로컬에 존재하면 도커허브에 올라간 최신의 이미지를 확인하지 않고 실행한다는 말도 된다.
따라서, PULL 후 RUN을 하는 것이 옳다.
'개발 > 도커' 카테고리의 다른 글
데이터 관리 및 볼륨으로 작업하기 - 02 (0) | 2023.02.15 |
---|---|
데이터 관리 및 볼륨으로 작업하기 - 01 (0) | 2023.02.12 |
Docker 이미지 & 컨테이너 : 코어 빌딩 블록 - 01 (0) | 2023.02.08 |
도커란? (0) | 2023.02.06 |
윈도우10 도커 설치 (0) | 2023.02.04 |