πŸ‹ 도컀 μ •λ³΅ν•˜κΈ° 2

may_soouuΒ·2020λ…„ 12μ›” 5일
0

docker

λͺ©λ‘ 보기
2/7
post-thumbnail

μ»¨ν…Œμ΄λ„ˆ vs 이미지

πŸ“Œ μ»¨ν…Œμ΄λ„ˆ
: μ½”λ“œμ™€ λͺ¨λ“  쒅속성을 νŒ¨ν‚€μ§€ν™”ν•˜μ—¬ μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μ»΄ν“¨νŒ… ν™˜κ²½μ—μ„œ λ‹€λ₯Έ μ»΄ν“¨νŒ… ν™˜κ²½μœΌλ‘œ λΉ λ₯΄κ³  μ•ˆμ •μ μœΌλ‘œ μ‹€ν–‰λ˜λ„λ‘ ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄μ˜ ν‘œμ€€ λ‹¨μœ„μž…λ‹ˆλ‹€.

πŸ“Œ 이미지 :
: μ½”λ“œ, λŸ°νƒ€μž„, μ‹œμŠ€ν…œ 도ꡬ와 같이 μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λŠ”λ° ν•„μš”ν•œ λͺ¨λ“  것을 ν¬ν•¨ν•˜λŠ” 독립적 νŒ¨ν‚€μ§€μž…λ‹ˆλ‹€.

즉, 도컀 μ΄λ―Έμ§€λ‘œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μƒμ„±ν•œλ‹€κ³  λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
도컀 μ΄λ―Έμ§€λ‘œ μ»¨ν…Œμ΄λ„ˆ 생성 > μ»¨ν…Œμ΄λ„ˆλ‘œ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰

1. 도컀 μ»¨ν…Œμ΄λ„ˆλ₯Ό 격리 μ‹œν‚€λŠ” 원리

C Goup κ³Ό λ„€μž„μŠ€νŽ˜μ΄μŠ€μ— λŒ€ν•œ κ°œλ…μ„ μ•Œμ•„μ•Όν•œλ‹€.

πŸ“Œ C Group
CPU, λ©”λͺ¨λ¦¬ λ“± ν”„λ‘œμ„ΈμŠ€ 그룹의 μ‹œμŠ€ν…œ λ¦¬μ†ŒμŠ€ μ‚¬μš©λŸ‰μ„ 관리
ex. μ–΄λ–€ μ–΄ν”Œμ˜ μ‚¬μš©λŸ‰μ΄ λ„ˆλ¬΄ 많음 > C Group에 집어 λ„£μ–΄μ„œ CPU와 λ©”λͺ¨λ¦¬ μ‚¬μš© μ œν•œ

πŸ“Œ λ„€μž„μŠ€νŽ˜μ΄μŠ€
ν•˜λ‚˜μ˜ μ‹œμŠ€ν…œμ—μ„œ μ‹œμŠ€ν…œμ„ κ²©λ¦¬μ‹œν‚¬ 수 μžˆλŠ” 가상화 기술

μœ„ λ‘κ°€μ§€λŠ” λ¦¬λˆ…μŠ€ 컀널에 μžˆλŠ” 기술이며, 이 두가지λ₯Ό μ‚¬μš©ν•˜μ—¬ μ»¨ν…Œμ΄λ„ˆλ₯Ό 격리 μ‹œν‚¨λ‹€. 그럼 μ–΄λ–»κ²Œ μœˆλ„μš°λ‚˜ mac osμ—μ„œ μž‘λ™ν• κΉŒ?

λ¦¬λˆ…μŠ€ μ»€λ„μ—μ„œ λ¦¬λˆ…μŠ€ VMμ΄λΌλŠ”κ²Œ κΉ”λ € μžˆλ‹€.
λ¦¬λˆ…μŠ€ 컀널 > λ¦¬λˆ…μŠ€ VM > MacOS / windows
컀널와 우리의 운영체제 사이에 λ¦¬λˆ…μŠ€ VM이 있기 λ•Œλ¬Έμ— κ°€λŠ₯ν•˜λ‹€.

2. λ„μ»€μ˜ μž‘λ™ μˆœμ„œ

  1. 도컀 ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ λͺ…λ Ήμ–΄ μž…λ ₯ ν•˜μ—¬ 도컀 μ„œλ²„λ‘œ 보냄
    (ex. docker run helloworld)
  2. 도컀 μ„œλ²„μ—μ„œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μœ„ν•œ 이미지가 이미 μžˆλŠ”μ§€ 확인
    (helloworld λΌλŠ” 이미지가 μžˆλŠ”μ§€ 확인)
  3. μ—†μœΌλ©΄ 도컀 ν—ˆλΈŒμ—μ„œ κ°€μ Έμ˜€κ³ , μžˆλ‹€λ©΄ κ·Έ μ΄λ―Έμ§€λ‘œ μ»¨ν…Œμ΄λ„ˆλ₯Ό 생성

3. 도컀 ν΄λΌμ΄μ–ΈνŠΈ λͺ…λ Ήμ–΄ μ’…λ₯˜

3-1. 이미지 λ‚΄λΆ€ 파일 μ‹œμŠ€ν…œ ꡬ쑰 보기

$ docker run 이미지이름 ls

# run을 ν•˜λ©΄μ„œ 이미지λ₯Ό μ„œλ²„μ—μ„œ κ°€μ Έμ˜΄(μ„œλ²„μ— μ—†μœΌλ©΄ ν—ˆλΈŒμ—μ„œ κ°€μ Έμ˜΄)
# ls λΌλŠ” λͺ…λ Ήμ–΄λŠ” λ„μ»€μ—μ„œ κ°€μ Έμ˜€λŠ” 이미지에 따라 λ˜κΈ°λ„ ν•˜κ³ , μ•ˆλ˜κΈ°λ„ 함

3-2. μ»¨ν…Œμ΄λ„ˆ λ‚˜μ—΄

# 싀행쀑인 μ»¨ν…Œμ΄λ„ˆλ§Œ λ³Ό λ•Œ
$ docker ps

# κΊΌμ ΈμžˆλŠ” μ»¨ν…Œμ΄λ„ˆκΉŒμ§€ μ „λΆ€ λ³Ό λ•Œ
$ docker ps -a

3-3. 도컀 μ‹€ν–‰ ~ μ‹œμž‘

docker run 은 μ‹€ν–‰κ³Ό μ‹œμž‘μ„ 같이 함 > docker create + docker start

1. docker create 이미지 이름
이미지에 μžˆλŠ” 파일 μŠ€λƒ…μƒ·μ„ ν•˜λ“œλ””μŠ€ν¬λ‘œ λ„£μ–΄μ€Œ

2. docker start -a μ»¨ν…Œμ΄λ„ˆ 아이디/이름
μ»¨ν…Œμ΄λ„ˆκ°€ μ‹€ν–‰ 됨

3-4. 도컀 쀑지

$ docker stop μ»¨ν…Œμ΄λ„ˆID/이름
$ docker kill μ»¨ν…Œμ΄λ„ˆID/이름

# 싀행쀑인 μ»¨ν…Œμ΄λ„ˆID/이름은 docker ps 둜 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“Œ stop vs kill 차이점
stop : κ·Έλ™μ•ˆ ν•˜λ˜ μž‘μ—…λ“€μ€ μ™„λ£Œν•˜κ³  μ»¨ν…Œμ΄λ„ˆ 쀑지
kill : μ–΄λ– ν•œ 것도 기닀리지 μ•Šκ³  λ°”λ‘œ 쀑지

3-5. 도컀 μ‚­μ œ

$ docker rm 아이디/이름
# λ§Œμ•½ 싀행쀑인 μ»¨ν…Œμ΄λ„ˆλΌλ©΄ λ¨Όμ € μ€‘μ§€ν•œ 후에 μ‚­μ œ κ°€λŠ₯ν•©λ‹ˆλ‹€.

# 전체 μ‚­μ œ
$ docker rm 'docker ps -a -q'

# 이미지 μ‚­μ œ
$ docker rmi 이미지id

# μ»¨ν…Œμ΄λ„ˆ, 이미지, λ„€νŠΈμ›Œν¬ λ“± λͺ¨λ‘ μ‚­μ œ ν•˜κ³  싢을 λ•Œ
$ docker system prune
# 도컀λ₯Ό 쓰지 μ•Šκ³ , λͺ¨λ‘ μ •λ¦¬ν•˜κ³  싢을 λ•Œ μ‚¬μš©ν•˜λ©΄ μ’‹μŠ΅λ‹ˆλ‹€.
# 싀행쀑인 μ»¨ν…Œμ΄λ„ˆλŠ” 영ν–₯을 주지 μ•ŠμŠ΅λ‹ˆλ‹€.

3-6. 싀행쀑인 μ»¨ν…Œμ΄λ„ˆμ— λͺ…λ Ήμ–΄ 보내기

# 싀행쀑인 μ»¨ν…Œμ΄λ„ˆμ— λͺ…λ Ήμ–΄λ₯Ό 전달할 λ•ŒλŠ”
$ docker exec -it μ»¨ν…Œμ΄λ„ˆμ•„μ΄λ”” λͺ…λ Ήμ–΄
# μ»¨ν…Œμ΄λ„ˆ ID 확인은 docker ps

κ·ΈλŸ¬λ‚˜, 맀번 '-it μ»¨ν…Œμ΄λ„ˆμ•„μ΄λ”” λͺ…λ Ήμ–΄' λ₯Ό μΉ˜λ©΄μ„œ μž…λ ₯ν•˜κΈ° 번거둭기 λ•Œλ¬Έμ—

$ docker exec μ»¨ν…Œμ΄λ„ˆμ•„μ΄λ”” sh

λ₯Ό μž…λ ₯ν•΄μ„œ μ»¨ν…Œμ΄λ„ˆ μ‰˜ μ•ˆμœΌλ‘œ λ“€μ–΄κ°€λ©΄ λͺ…λ Ήμ–΄(ls, touch.. λ“±)만 μž…λ ₯ν•΄μ„œ λ™μž‘ν•  수 μžˆλ‹€. 
(μ•„λž˜ 이미지 μ°Έκ³ )

μ‰˜ ν™˜κ²½μ—μ„œ λΉ μ Έ λ‚˜μ˜€λ €λ©΄ : control + d

profile
back-end 개발자

0개의 λŒ“κΈ€