3.1.도커 허브에 공유된 이미지 사용하기

web-ping 애플리케이션의 컨테이너 이미지를 내려 받자

  • 이미지를 제공하는 저장소를 레지스트리(registry)
  • 도커 허브는 무료로 제공되는 공개 레지스트리
001)  docker image pull diamol/ch03-web-ping
002) Using default tag: latest
003) latest: Pulling from diamol/ch03-web-ping
004) 0362ad1dd800: Pull complete
005) b09a182c47e8: Pull complete
006) 39d61d2ed871: Pull complete
007) b4e2115e274a: Pull complete
008) f5cca017994f: Pull complete
009) f504555623f6: Pull complete
010) Digest: sha256:2f2dce710a7f287afc2d7bbd0d68d024bab5ee37a1f658cef46c64b1a69affd2
011) Status: Downloaded newer image for diamol/ch03-web-ping:latest
012) docker.io/diamol/ch03-web-ping:latest
  1. 004~010: 하나의 이미지는 여러 이미지가 계층적으로 쌓인 형태로 저장된다.

  2. 이미지를 내려받는 과정을 보면 여러 건의 파일을 동시헤 내려받는다는 점을 알 수 있다.

  3. 이들 각각의 파일을 이미지 레이어라고 부른다.
  4. 도커 이미지는 여러 개의 작은 파일로 구성돼 있다.
  5. 그리고 도커가 이들 파일을 조립해 컨테이너 내부 파일 시스템을 만든다.
  6. 모든 레이어를 내려받고 나면 전체 이미지를 사용할 수 있게 된다.

내려받은 이미지로 컨테이너를 실행하고 실행된 애플리케이션의 기능을 확인하자

001)  docker container run -d --name web-ping diamol/ch03-web-ping
  1. 001: --name 플래그를 사용하여 컨테이너 이름 지정

도커를 통해 수집된 애플리케이션의 로그를 살펴보자

001)  docker container logs web-ping
002) ** web-ping ** Pinging: blog.sixeyed.com; method: HEAD; 3000ms intervals
003) Making request number: 1; at 1686886764945
004) Got response status: 200 at 1686886766236; duration: 1291ms
005) Making request number: 2; at 1686886767951
006) Got response status: 200 at 1686886768897; duration: 946ms
007) Making request number: 3; at 1686886770956
008) Got response status: 200 at 1686886771713; duration: 757ms
009) Making request number: 4; at 1686886773960
010) Got response status: 200 at 1686886775145; duration: 1185ms
011) Making request number: 5; at 1686886776965
012) Got response status: 200 at 1686886778179; duration: 1214ms
013) Making request number: 6; at 1686886779967
014) Got response status: 200 at 1686886780880; duration: 913ms
015) Making request number: 7; at 1686886782972
016) Got response status: 200 at 1686886785587; duration: 2615ms
017) Making request number: 8; at 1686886785978
018) Got response status: 200 at 1686886787226; duration: 1248ms
019) Making request number: 9; at 1686886788980
020) Got response status: 200 at 1686886790216; duration: 1236ms
021) Making request number: 10; at 1686886791987
022) Got response status: 200 at 1686886793484; duration: 1497ms
023) Making request number: 11; at 1686886794989
024) Got response status: 200 at 1686886796237; duration: 1248ms
025) Making request number: 12; at 1686886797992
  1. 001: 대상 컨테이너에서 수집된 모든 로그를 출력, 도커는 애플리케이션의 표준 출력으로부터 로그를 수집
  2. 002~025: 애플리케이션이 blog.sixeyed.com 으로 HTTP 요청을 반복적으로 보내고 있다는 내용

실행 중인 컨테이너를 삭제하고 환경 변수 TARGET의 값을 다른 값으로 지정한 새로운 컨테이너를 실행하라

  • 도커 이미지는 설정값의 기본값을 포함해 패키징 되지만 컨테이너를 실행할 때 이 설정값을 바꿀 수 있어야 한다.
001)  docker container run --env TARGET=google.com diamol/ch03-web-ping
002) ** web-ping ** Pinging: google.com; method: HEAD; 3000ms intervals
003) Making request number: 1; at 1686887437176
004) Got response status: 301 at 1686887437462; duration: 286ms
005) Making request number: 2; at 1686887440177
006) Got response status: 301 at 1686887440389; duration: 212ms
007) Making request number: 3; at 1686887443181
008) Got response status: 301 at 1686887443372; duration: 191ms
  1. 001: --env 플래그를 사용하여 애플리케이션에서 사용할 환경변수 값 지정한

links

social