๐ ํฐ๋ฏธ๋์์ DockerHub ๊ณต๊ฐ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ฃผ์ธ์.
โ ์๊ฐ
Docker Registry
HTTP API V2
make๋ ํธ์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ฟผ๋ฆฌํ ์ ์์ต๋๋ค.๊ณต๊ฐ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค.
API์ ๋ํด ์์ธํ ์์๋ณด๊ธฐ
jq
์ต์
์ผ๋ก ์ฌ์ํฐ๋ฏธ๋ ์์ฒด์์ ์ฌ๋ฏธ์๊ณ ํฅ๋ฏธ๋ก์ด ๋ฐฉ์์ผ๋ก ์ผ๋ถ ์ฝํ ์ธ ํ์
๐ก ์์ด๋์ด
์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ถํ๋ ํ์๊ฒ ์ด๋ฏธ์ง์ ์ธ๊ธฐ๋ฅผ ์ ์ฆํ๊ธฐ ์ํด
I wanted to display a ranking they could play with on their workstations... right into their terminal
๐งฐ ํด๋ง
๋ฐ๋ผ์ ํ์์ API๋ฅผ ํ ์คํธํ๊ณ ๋ฌธ์ํํ๊ธฐ ์ํด ์ด๋ฏธ ๋งค์ผ ์ฌ์ฉํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
httpie
: "/aitch-tee-tee-pie/pie๋งํผ ์ฝ์ต๋๋ค. API ์๋๋ฅผ ์ํ ํ๋์ ์ด๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ ๋ช
๋ น์ค HTTP ํด๋ผ์ด์ธํธ์
๋๋ค. JSON ์ง์, ์์, ์ธ์
, ๋ค์ด๋ก๋, ํ๋ฌ๊ทธ์ธ ๋ฑ. "jq
: "jq๋ JSON ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ sed
์ ๊ฐ์ต๋๋ค."... ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฏธ์ ๊ดด์ง ๋ฌธํ๋ฅผ ์ํด :
lolcat
: "๋ฌด์ง๊ฐ์ ์ ๋์ฝ!"http https://hub.docker.com/v2/repositories/optnc | \
jq -r '"Image\tPulls", "-----------------------\t---", ( .results | sort_by(.pull_count) | reverse | .[] | "\(.name)\t\(.pull_count)")' | \
column -t -s $'\t' | \
lolcat -a -d 20
๐ฟ ๋ฐ๋ชจ
์ต์ข ๋ฐ๋ชจ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฐ๋ก ์๋์์ ๋์์ ์์ค ์ฝ๋๋ฅผ ์ฐพ์ผ์ญ์์ค(๋ค์ ์ฌ์ํ๊ฑฐ๋ ์ฌ์ฉ์ ์ง์ ํ ์ ์์).
# ๐ค Let's see at optnc's public images on DockerHub ๐
http https://hub.docker.com/v2/repositories/optnc | jq -r '"Image\tStars\tPulls", "-----------------------\t-------\t------", ( .results | sort_by(.pull_count) | reverse | .[] | "\(.name)\t\(.star_count)\t\(.pull_count)")' | column -t -s $'\t'
# ๐ฌ Now watching the spicy way ๐
clear && http https://hub.docker.com/v2/repositories/optnc | \
jq -r '"Image\tPulls", "-----------------------\t---", ( .results | sort_by(.pull_count) | reverse | .[] | "\(.name)\t\(.pull_count)")' | \
column -t -s $'\t' | \
lolcat -a -d 20
# ๐๐ป Hopefully you enjoyed this short demo ๐
๐ ๋ฆฌ์์ค
๐ ์ด์
์ต์ข ๋ฒ์ ์ ๋ง๋๋ ๋ฐ ๋์์ด ๋ ์ด์ ์๋ ๐
http https://hub.docker.com/v2/repositories/optnc | jq -r '.results|.[] | "\(.name)\t\(.star_count)"' | column -t -s $'\t'
๊ทธ๋ฐ ๋ค์ ์ ๋ ฌ๋ ๋ฒ์ :
http https://hub.docker.com/v2/repositories/optnc | jq -r '"Image\tStars", "-----------------------\t-------", ( .results|.[] | "\(.name)\t\(.star_count)" )' | column -t -s $'\t'
desc๋ฅผ ๋ณ๋ณ๋ก ์ ๋ ฌ:
http https://hub.docker.com/v2/repositories/optnc | jq -r '( .results | sort_by(.star_count) | reverse | .[] | "\(.name)\t\(.star_count)")' | column -t -s $'\t'
๊ทธ๋ฐ ๋ค์
lolcat
๋ฐฐ๊ด์ผ๋ก :http https://hub.docker.com/v2/repositories/optnc | jq -r '"Image\tStars\tPulls", "-----------------------\t-------\t------", ( .results | sort_by(.pull_count) | reverse | .[] | "\(.name)\t\(.star_count)\t\(.pull_count)")' | column -t -s $'\t' | lolcat
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ ํฐ๋ฏธ๋์์ DockerHub ๊ณต๊ฐ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ฃผ์ธ์.), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/optnc/show-me-your-dockerhub-public-images-in-your-terminal-39n4ํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค