STUDY/CLOUD

[κ°•μ˜] λ”°λΌν•˜λ©° λ°°μš°λŠ” 도컀와 CIν™˜κ²½ -2

ozllzL 2022. 5. 17. 22:52

πŸ‹ 도컀 이미지 λ‚΄λΆ€ 파일 ꡬ쑰 

docker run <이미지이름> <λͺ…λ Ήμ–΄>

 

1. 도컀 ν΄λΌμ΄μ–ΈνŠΈμ— μž…λ ₯ν•˜λ©΄ μœ„ λ¬Έμž₯을 μž…λ ₯ν•˜λ©΄ 도컀 μ„œλ²„λ‘œ 보냄

2. 도컀 μ„œλ²„μ—μ„œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μœ„ν•œ 이미지가 이미 캐쉬가 λ˜μ–΄ μžˆλŠ”μ§€ 확인 

3. μ—†μœΌλ©΄ 도컀 ν—ˆλΈŒμ—μ„œ λ‹€μš΄ λ°›μ•„μ˜΄ μžˆλ‹€λ©΄ κ·Έ 이미 κ°€μ§€κ³  μžˆλŠ” μ΄λ―Έμ§€λ‘œ μ»¨ν…Œμ΄λ„ˆ 생성

 

<λͺ…λ Ήμ–΄> μž…λ ₯ν•˜λ©΄

4. 생성할 λ•Œ <이미지 이름> μ•ˆμ— λ“€μ–΄μžˆλ˜ 파일 μŠ€λƒ…μƒ·λ“€μ΄ μ»¨ν…Œμ΄λ„ˆ μ•ˆμ— μžˆλŠ” ν•˜λ“œ λ””μŠ€ν¬λ‘œ λ‹€μš΄λ‘œλ“œλ¨ 

5. 이미지 이름 뒀에 λ‹€λ₯Έ λͺ…λ Ήμ–΄λ₯Ό 더 뢙이면,

μ›λž˜ 이미지 μ•ˆμ— λ“€μ–΄μžˆλŠ” κΈ°λ³Έ μ»€λ§¨λ“œλŠ” λ¬΄μ‹œκ°€ 되고  μž…λ ₯ν•œ λͺ…λ Ήμ–΄κ°€ 싀행됨 

 

πŸ‹ μ»¨ν…Œμ΄λ„ˆλ“€ λ‚˜μ—΄ν•˜κΈ°

ν˜„μž¬ 싀행쀑인 μ»¨ν…Œμ΄λ„ˆ λ‚˜μ—΄ docker ps(process status)

docker ps --format "table {{.Names}}\t{{.Image}}" - μ›ν•˜λŠ” ν•­λͺ©λ§Œ 보기

docker ps -a μ „λΆ€ 보기

κΊΌμ§„ 것도 λ³΄μž„

πŸ‹ 도컀 μ»¨ν…Œμ΄λ„ˆμ˜ μ‹€ν–‰μ£ΌκΈ°

 

docker create hello-world -> id : 생성

docker start <μ»¨ν…Œμ΄λ„ˆ id/ 이름> : μ‹€ν–‰

docker start -a : 도컀 μ»¨ν…Œμ΄λ„ˆμ˜ output듀을 화면에 ν‘œμ‹œν•΄μ€€λ‹€.

idλŠ” μΌλΆ€λ§Œ 넣어도 μ•Œμ•„λ“£λŠ”λ‹€.

πŸ‹ Docker Stop vs Docker Kill

stop은 gracefully ν•˜κ²Œ μ’…λ£Œ. Grace Period κΈ°λ‹€λ¦Ό

kill은 λ°”λ‘œ 쀑지

 

πŸ‹ μ»¨ν…Œμ΄λ„ˆ μ‚­μ œν•˜κΈ°

docker rm <아이디/이름> μ€‘μ§€λœ μ»¨ν…Œμ΄λ„ˆ μ‚­μ œ

docker rm `docker ps -a -q` λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆ μ‚­μ œ

docker rmI <이미지 id> 이미지 μ‚­μ œ

docker system prune ν•œλ²ˆμ— λͺ¨λ“  이미지, λ„€νŠΈμ›Œν¬, μ»¨ν…Œμ΄λ„ˆ λͺ¨λ‘ μ§€μš°κΈ°

 

πŸ‹ μ‹€ν–‰ 쀑인 μ»¨ν…Œμ΄λ„ˆμ— λͺ…λ Ήμ–΄ 전달

docker exec <μ»¨ν…Œμ΄λ„ˆ 아이디>

docker run - μƒˆλ‘œ μ»¨ν…Œμ΄λ„ˆλ₯Ό λ§Œλ“€μ–΄μ„œ μ‹€ν–‰

docker exec -  이미 싀행쀑인 μ»¨ν…Œμ΄λ„ˆμ— λͺ…λ Ήμ–΄ 전달

 

πŸ‹ λ ˆλ””μŠ€λ₯Ό μ΄μš©ν•œ μ»¨ν…Œμ΄λ„ˆμ˜ 이해

docker run redis

docker run redis-cli

λ ˆλ””μŠ€ ν΄λΌμ΄μ–ΈνŠΈκ°€ λ ˆλ””μŠ€ μ„œλ²„λ₯Ό μž‘λ™ν•˜λ € ν•˜μ§€λ§Œ μ»¨ν…Œμ΄λ„ˆ 밖이기에 였λ₯˜κ°€ λ°œμƒν•œλ‹€.

-> 같은 μ»¨ν…Œμ΄λ„ˆμ— λ„£μ–΄μ€˜μ•Όν•¨

-itλ₯Ό λΆ™μ—¬μ£Όμ–΄ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•œ ν›„ 계속 λͺ…λ Ήμ–΄λ₯Ό 적을 수 있게 함

 

πŸ‹ μ‹€ν–‰ 쀑인 μ»¨ν…Œμ΄λ„ˆμ—μ„œ 터미널 μƒν™œ 즐기기

docker exec -it <μ»¨ν…Œμ΄λ„ˆ id> <λͺ…λ Ήμ–΄>

λͺ…λ Ήμ–΄ 뢀뢄에 sh μž…λ ₯ν•˜λ©΄ (OSλ§ˆλ‹€ λ‹€λ₯Ό 수 있음 보편적인건 sh)

μ „λΆ€ λ‹€ μž…λ ₯ μ•ˆν•˜κ³  λͺ…λ Ήμ–΄λ§Œ μž…λ ₯해도 됨

 

πŸ‹ 도컀 이미지 μƒμ„±ν•˜λŠ” μˆœμ„œ

πŸ‹ Dockerfile λ§Œλ“€κΈ°

1. 베이슀 이미지λ₯Ό λͺ…μ‹œν•΄μ€€λ‹€. (파일 μŠ€λƒ…μƒ·μ— ν•΄λ‹Ή)

2. μΆ”κ°€μ μœΌλ‘œ ν•„μš”ν•œ νŒŒμΌμ„ λ‹€μš΄ λ°›κΈ° μœ„ν•œ λͺ‡ κ°€μ§€ λͺ…λ Ήμ–΄λ₯Ό λͺ…μ‹œν•΄μ€€λ‹€. (파일 μŠ€λƒ…μƒ·μ— ν•΄λ‹Ή)

3. μ»¨ν…Œμ΄λ„ˆ μ‹œμž‘ μ‹œ 싀행될 λͺ…λ Ήμ–΄λ₯Ό λͺ…μ‹œν•΄μ€€λ‹€. (μ‹œμž‘ μ‹œ 싀행될 λͺ…령어에 ν•΄λ‹Ή)

 

FROM alpine

#λ‹€μš΄λ°›μ„ κ±° λ‹€μš΄λ°›μŒ μ—†μœΌλ―€λ‘œ μ£Όμ„μ²˜λ¦¬
#RUN command

CMD ["echo", "hello"]

FROM 
이미지 생성 μ‹œ 기반이 λ˜λŠ” 이미지 λ ˆμ΄μ–΄
<이미지 μ΄λ¦„>:<νƒœκ·Έ> ν˜•μ‹μœΌλ‘œ μž‘μ„± 
νƒœκ·Έλ₯Ό μ•ˆ 뢙이면 μžλ™μ μœΌλ‘œ κ°€μž₯ μ΅œμ‹  κ²ƒμœΌλ‘œ λ‹€μš΄ λ°›μŒ

RUN 
도컀 이미지가 μƒμ„±λ˜κΈ° 전에 μˆ˜ν–‰ν•  μ‰˜ λͺ…λ Ήμ–΄
CMD
μ»¨ν…Œμ΄λ„ˆκ°€ μ‹œμž‘λ˜μ—ˆμ„ λ•Œ
μ‹€ν–‰ν•  μ‹€ν–‰ 파일 λ˜λŠ” μ…Έ 슀크립트
ν•΄λ‹Ή λͺ…λ Ήμ–΄λŠ” DockerFile λ‚΄ 1회만 μ“Έ 수 있음

1. Alpine이미지

2. μž„μ‹œ μ»¨ν…Œμ΄λ„ˆ 생성

  ν•˜λ“œλ””μŠ€ν¬μ— 파일 μŠ€λƒ…μƒ·

  μž„μ‹œμ»¨ν…Œμ΄λ„ˆμ— echo

  => μƒˆλ‘œμš΄ Alpine 이미지 생성, μž„μ‹œμ»¨ν…Œμ΄λ„ˆ 지움

 

μ΄λ―Έμ§€λ‘œ μ»¨ν…Œμ΄λ„ˆλ₯Ό λ§Œλ“€μ§€λ§Œ, μ»¨ν…Œμ΄λ„ˆλ‘œ μƒˆλ‘œμš΄ 이미지λ₯Ό λ§Œλ“ λ‹€

 

πŸ‹ λ‚΄κ°€ λ§Œλ“  이미지 κΈ°μ–΅ν•˜κΈ° μ‰¬μš΄ 이름 μ£ΌκΈ°

idκ°€ κΈ°μ–΅ν•˜κΈ° λ„ˆλ¬΄ 어렀움

docker build -t 도컀아이디/ν”„λ‘œμ νŠΈμ΄λ¦„:버전 ./