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
-
004~010: 하나의 이미지는 여러 이미지가 계층적으로 쌓인 형태로 저장된다.
-
이미지를 내려받는 과정을 보면 여러 건의 파일을 동시헤 내려받는다는 점을 알 수 있다.
- 이들 각각의 파일을 이미지 레이어라고 부른다.
- 도커 이미지는 여러 개의 작은 파일로 구성돼 있다.
- 그리고 도커가 이들 파일을 조립해 컨테이너 내부 파일 시스템을 만든다.
- 모든 레이어를 내려받고 나면 전체 이미지를 사용할 수 있게 된다.
내려받은 이미지로 컨테이너를 실행하고 실행된 애플리케이션의 기능을 확인하자
001) ➜ docker container run -d --name web-ping diamol/ch03-web-ping
- 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
- 001: 대상 컨테이너에서 수집된 모든 로그를 출력, 도커는 애플리케이션의 표준 출력으로부터 로그를 수집
- 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
- 001:
--env
플래그를 사용하여 애플리케이션에서 사용할 환경변수 값 지정한