TIL

TIL 64: [배포] Docker

Deviloper😈 2021. 11. 2. 18:25

μ˜€λŠ˜μ€ Dockerλ₯Ό μ‚¬μš©ν•΄μ„œ λ ˆμ§€μŠ€νŠΈλ¦¬ μ•ˆμ— μžˆλŠ” 이미지λ₯Ό 톡해 μ»¨ν…Œμ΄λ„ˆλ₯Ό μƒμ„±ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€. λ˜ν•œ 두 개 μ΄μƒμ˜ 이미지λ₯Ό λ‹€λ£¨λŠ” 방식을 κ³΅λΆ€ν–ˆμŠ΅λ‹ˆλ‹€. μ΄μ „μ—λŠ” AMIμ—μ„œ Image μ •λ„λ§Œ μ ‘ν–ˆμ–΄μ„œ μ΄λ―Έμ§€λΌλŠ” 단어λ₯Ό 읽으면 사진을 λ¨Όμ € λ– μ˜¬λ Έμ—ˆλŠ”λ°, μ‹€μŠ΅κΉŒμ§€ ν•˜λ‹ˆ 이제 이미지λ₯Ό 읽으면 λ¨Όμ € μ»¨ν…Œμ΄λ„ˆλ₯Ό 생성할 λ•Œ μ‚¬μš©λ˜λŠ” ν…œν”Œλ¦Ώμ„ λ– μ˜¬λ¦¬κ²Œ λ˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€! 😊

 

μ»¨ν…Œμ΄λ„ˆ

μ»¨ν…Œμ΄λ„ˆλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ˜μ‘΄μ„±, λ„€νŠΈμ›Œν¬ ν™˜κ²½, 파일 μ‹œμŠ€ν…œκ³Ό 같이 μ‹€ν–‰ν™˜κ²½μ— ꡬ애받지 μ•Šκ³ , λ„μ»€λΌλŠ” 기술 μœ„μ— 싀행될 수 μžˆλ„λ‘ λ§Œλ“  μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μƒμžμž…λ‹ˆλ‹€.

 

μ»¨ν…Œμ΄λ„ˆ λ°©μ‹μ˜ μž₯점

μ˜μ‘΄μ„± 좩돌 문제 ν•΄κ²°

μ»¨ν…Œμ΄λ„ˆλŠ” ν”„λ‘œμ„ΈμŠ€, λ„€νŠΈμ›Œν¬, 파일 μ‹œμŠ€ν…œμ„ κ²©λ¦¬ν•˜κ³  λ…λ¦½μ μœΌλ‘œ μ†Œμœ ν•©λ‹ˆλ‹€. 

μ—¬κΈ°μ„œ ν”„λ‘œμ„ΈμŠ€λž€ μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨μœΌλ‘œ νŠΉμ • μ»¨ν…Œμ΄λ„ˆμ—μ„œ μž‘λ™ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λŠ” 기본적으둜 κ·Έ μ»¨ν…Œμ΄λ„ˆ μ•ˆμ—μ„œλ§Œ μ•‘μ„ΈμŠ€ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ»¨ν…Œμ΄λ„ˆ μ•ˆμ—μ„œ μ‹€ν–‰λ˜λŠ” ν”„λ‘œμ„ΈμŠ€λŠ” λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ 영ν–₯을 쀄 수 μ—†μŠ΅λ‹ˆλ‹€.

λ„€νŠΈμ›Œν¬λŠ” 기본으둜 μ»¨ν…Œμ΄λ„ˆ ν•˜λ‚˜μ— ν•œμ˜ IP μ£Όμ†Œκ°€ ν• λ‹Ήλ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

파일 μ‹œμŠ€ν…œμ€ κ΅¬νšν™” λ˜μ–΄μžˆμ–΄ μ»¨ν…Œμ΄λ„ˆμ—μ„œμ˜ λͺ…λ Ήμ΄λ‚˜ 파일 λ“±μ˜ μ•‘μ„ΈμŠ€λ₯Ό μ œν•œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

μ»¨ν…Œμ΄λ„ˆλŠ” 가상머신(Virtual Machine, VM)κ³Ό λΉ„μŠ·ν•©λ‹ˆλ‹€. VM은 ν•˜λ‚˜μ˜ 호슀트 컴퓨터 μœ„μ— μ—¬λŸ¬ 개의 독립적인 컴퓨터가 μž‘λ™ν•  수 있게 ν•˜λŠ” κΈ°μˆ μž…λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€, λ„€νŠΈμ›Œν¬, 파일 μ‹œμŠ€ν…œμ„ 격리할 수 μžˆλ‹€λŠ” μž₯점은 μ»¨ν…Œμ΄λ„ˆμ™€ λ™μΌν•˜μ§€λ§Œ, VM은 λ§Œλ“€κ³  μ‹€ν–‰ν•˜λŠ” κ³Όμ •μ—μ„œ λ§Žμ€ μ»΄ν“¨νŒ… μžμ›μ„ ν•„μš”λ‘œ ν•©λ‹ˆλ‹€. λ˜ν•œ VMμœ„μ— 운영체제λ₯Ό λ°˜λ“œμ‹œ μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. 반면, DockerλŠ” ν•œ 호슀트 컴퓨터에 μ—¬λŸ¬ 개의 μ»¨ν…Œμ΄λ„ˆλ₯Ό λ„μ›Œλ„ 크게 컴퓨터에 무리가 κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 그리고 Docker ImageλŠ” 주둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‹¨μœ„λ‘œ λ§Œλ“€μ–΄μ Έ μžˆμŠ΅λ‹ˆλ‹€.

 

참고둜 AMIλ₯Ό 톡해 μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“œλŠ” 것은 VM에 ν•΄λ‹Ήν•©λ‹ˆλ‹€. 

VMμ—μ„œμ˜ Hypervisor의 μ˜ˆμ‹œλ‘œλŠ” VMware, VirtualBox, Hyper-V 등이 μžˆμŠ΅λ‹ˆλ‹€.

 

개발과 배포 ν™˜κ²½ 일치

OS에 상관없이 μ¦‰μ‹œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰ ν™˜κ²½μ„ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

κ°œλ°œμ„ μ»¨ν…Œμ΄λ„ˆ μœ„μ—μ„œ μ§„ν–‰ν•  경우, λͺ¨λ“  κ°œλ°œνŒ€μ΄ λ™μΌν•œ ν™˜κ²½ ν•˜μ— κ°œλ°œμ„ μ§„ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

배포 λ˜ν•œ μ„œλ²„κ°€ μ»¨ν…Œμ΄λ„ˆμ— λ‹΄κΈ΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•¨μ— 따라 OSκ°€ 달라도 잘 싀행될 수 μžˆμŠ΅λ‹ˆλ‹€. AWS의 EC2 상에 도컀λ₯Ό μ„€μΉ˜ν•˜κ±°λ‚˜, 도컀 μ»¨ν…Œμ΄λ„ˆλ₯Ό EC2 μ„œλ²„μ—μ„œ μ‹€ν–‰ν•  수 있게 ν•˜λŠ” μ„œλΉ„μŠ€μΈ ECSλ₯Ό μ΄μš©ν•˜μ—¬ 보닀 μ‰½κ²Œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 배포할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

μˆ˜ν‰ ν™•μž₯ 용이 & μƒˆλ‘œμš΄ λ‚΄μš©μ˜ 배포

μˆ˜λ§Žμ€ μ‚¬λžŒλ“€μ΄ μ΄μš©ν•˜λŠ” μ„œλΉ„μŠ€μ˜ 경우 ν•˜λ‚˜μ˜ μ„œλ²„λ§ŒμœΌλ‘œ νŠΈλž˜ν”½μ„ 감당할 수 μ—†μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ„œλΉ„μŠ€ μ œκ³΅μžλ“€μ€ μ΄λŸ¬ν•œ νŠΈλž˜ν”½ 뢄산을 μœ„ν•΄ ν”„λ‘μ‹œ μ„œλ²„λ₯Ό μš΄μ˜ν•˜λ©°, ν”„λ‘μ‹œ μ„œλ²„λŠ” μ—¬λŸ¬ λŒ€μ˜ λ™μΌν•œ μ„œλ²„ 쀑 ν•œ ꡰ데λ₯Ό μ΄μš©ν•  수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ„œλ²„λ₯Ό λ¦¬λ²„μŠ€ ν”„λ‘μ‹œμ˜ ν•œ μ’…λ₯˜μΈ, 그리고 μ–΄μ œ κ³΅λΆ€ν–ˆλ˜ λ‘œλ“œ λ°ΈλŸ°μ„œλΌκ³  λΆ€λ¦…λ‹ˆλ‹€. λ™μΌν•œ μ„œλΉ„μŠ€κ°€ μ—¬λŸ¬ μ»΄ν“¨ν„°μ—μ„œ μž‘λ™ν•  수 μžˆλŠ” μ΄μœ λŠ” μ»¨ν…Œμ΄λ„ˆ 기술의 μž₯점인 μ‹€ν–‰ ν™˜κ²½μ˜ 일치 λ•Œλ¬Έμž…λ‹ˆλ‹€. μΏ λ²„λ„€ν‹°μŠ€μ™€ 같이 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ 도ꡬ라고 λΆ€λ₯΄λŠ” 것듀이 μ»¨ν…Œμ΄λ„ˆ κΈ°μˆ μ„ ν™œμš©ν•΄μ„œ μ—¬λŸ¬ μ„œλ²„ 쀑 λͺ‡ λŒ€μ—λ§Œ μš΄μ˜ν•˜μ—¬ ν…ŒμŠ€νŠΈλ₯Ό ν•˜κ³ , μƒˆ λ²„μ „μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ λ°œμƒν•  수 μžˆλŠ” λ¬Έμ œλ“€μ„ 미리 ν™•μΈν•˜κ³ , μ΄λŸ¬ν•œ λ¬Έμ œκ°€ μ‚¬μš©μž μ „μ²΄μ—κ²Œ λΌμΉ˜μ§€ μ•Šλ„λ‘ λ§Œλ“€ 수 있게 ν•΄μ£ΌλŠ” λ„κ΅¬μž…λ‹ˆλ‹€. 

 

 

이미지와 λ ˆμ§€μŠ€νŠΈλ¦¬

μ‹€ν–‰λ˜λŠ” λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆλŠ” μ΄λ―Έμ§€λ‘œλΆ€ν„° μƒμ„±λ©λ‹ˆλ‹€. μ΄λ―Έμ§€λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 및 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ꡬ성을 ν•¨κ»˜ 담아놓은 ν…œν”Œλ¦ΏμœΌλ‘œ, 이λ₯Ό μ΄μš©ν•΄ ν•œ 개 ν˜Ήμ€ μ—¬λŸ¬ 개의 μ»¨ν…Œμ΄λ„ˆλ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ―Έμ§€λŠ” κΈ°λ³Έ μ΄λ―Έμ§€λ‘œλΆ€ν„° λ³€κ²½ 사항을 μΆ”κ°€/μ»€λ°‹ν•΄μ„œ 또 λ‹€λ₯Έ 이미지λ₯Ό λ§Œλ“€ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

λ ˆμ§€μŠ€νŠΈλ¦¬μ—λŠ” 이미지가 μ €μž₯λ©λ‹ˆλ‹€. Docker Hub, Amazon ECR 등이 μžˆμŠ΅λ‹ˆλ‹€. 도컀 CLIμ—μ„œ 이미지λ₯Ό μ΄μš©ν•΄ μ»¨ν…Œμ΄λ„ˆλ₯Ό 생성할 λ•Œ, 호슀트 컴퓨터(둜컬)에 이미지가 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, κΈ°λ³Έ λ ˆμ§€μŠ€νŠΈλ¦¬λ‘œλΆ€ν„° λ‹€μš΄λ‘œλ“œ(pull)λ₯Ό λ°›κ²Œλ©λ‹ˆλ‹€. 

 

 

Docker CLI

docker image pull

docker image pull docker/whalesay:latest

μœ„μ™€ 같은 λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄ Docker Hubμ΄λΌλŠ” λ ˆμ§€μŠ€ν‹”μ—μ„œ dockerλΌλŠ” μœ μ €κ°€ λ“±λ‘ν•œ whalesay 이미지 ν˜Ήμ€ λ ˆν¬μ§€ν† λ¦¬μ—μ„œ latest νƒœκ·Έλ₯Ό κ°€μ§€ 이미지λ₯Ό λ°›μ•„μ˜΅λ‹ˆλ‹€.

 

docker container run [options]

docker container run --name μ»¨ν…Œμ΄λ„ˆμ΄λ¦„ docker/whalesay:latest cowsay boo~~~

μœ„μ˜ λͺ…λ Ήμ–΄λŠ” λ°›μ•„μ˜¨ 이미지λ₯Ό μ‹€ν–‰ν•˜μ—¬ μ»¨ν…Œμ΄λ„ˆμ΄λ¦„μ„ μ΄λ¦„μœΌλ‘œ κ°–λŠ” μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. 이미지가 λ‘œμ»¬μ— μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ μžλ™μœΌλ‘œ ν•΄λ‹Ή 이미지λ₯Ό λ‹€μš΄λ‘œλ“œ(pull)λ₯Ό ν•©λ‹ˆλ‹€. λ˜ν•œ μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ μ‹œ boo~~~λΌλŠ” νŒŒλΌλ―Έν„°λ₯Ό cowsay λͺ…령어에 λ„˜κ²¨μ£Όμ–΄ ν˜ΈμΆœν•©λ‹ˆλ‹€. 그럼 μ•„λž˜μ™€ 같이 boo~~~κ°€ 좜λ ₯되며 고래λͺ¨μ–‘이 λ‚˜μ˜€κ²Œ λ©λ‹ˆλ‹€.

이미지λ₯Ό μ‹€ν–‰ν•  λ•Œ --rm μ˜΅μ…˜μ„ λ„£μ–΄μ£Όλ©΄ μ»¨ν…Œμ΄λ„ˆλ₯Ό μΌνšŒμ„±μœΌλ‘œ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ»¨ν…Œμ΄λ„ˆκ°€ μ€‘μ§€λ˜κ±°λ‚˜ μ’…λ£Œλ  λ•Œ, μ»¨ν…Œμ΄λ„ˆμ™€ κ΄€λ ¨λœ λ¦¬μ†ŒμŠ€λ₯Ό λͺ¨λ‘ μ œκ±°ν•©λ‹ˆλ‹€. 이미지λ₯Ό 톡해 λ§Œλ“  μ»¨ν…Œμ΄λ„ˆλ₯Ό λͺ¨λ‘ μ‚­μ œν•˜μ§€ μ•Šμ•˜λ‹€λ©΄, 이미지λ₯Ό μ‚­μ œν•  수 μ—†μŠ΅λ‹ˆλ‹€.

 

docker container run -it --rm danielkraic/asciiquarium:latest

μœ„μ˜ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λ©΄ μ•„λž˜μ™€ 같은 μˆ˜μ‘±κ΄€μ΄ λ‚˜μ˜¬ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œ -itλŠ” -i와 -tλ₯Ό λ™μ‹œμ— μ‚¬μš©ν•œ μ˜΅μ…˜μœΌλ‘œ, μ‚¬μš©μžμ™€ μ»¨ν…Œμ΄λ„ˆ 간에 μΈν„°λ ‰μ…˜μ΄ ν•„μš”ν•œ 경우 이 μ˜΅μ…˜μ„ μ‚¬μš©ν•©λ‹ˆλ‹€. 

 

 

 

μ•žμ„œ λ§ν–ˆλ˜ κ²ƒμ²˜λŸΌ 기쑴의 이미지에 컀밋/μΆ”κ°€ν•΄μ„œ 또 λ‹€λ₯Έ 이미지λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ²ˆμ—λŠ” 이 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. λ‘œμ»¬μ— μ €μž₯된 파일과 ν•¨κ»˜ 도컀 이미지λ₯Ό μ΄μš©ν•  κ²ƒμž…λ‹ˆλ‹€.

docker container run --name μ»¨ν…Œμ΄λ„ˆ_이름 -p 818:80 httpd

httpd(http daemon)μ΄λΌλŠ” 도컀 이미지λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” μœ„μ™€ 같은 λͺ…λ Ήμ–΄λ₯Ό μ΄μš©ν•©λ‹ˆλ‹€. μ—¬κΈ°μ„œ httpdλŠ” Apache HTTP Serverλ₯Ό μ‹€ν–‰ν•  수 μžˆλŠ” μ˜€ν”ˆμ†ŒμŠ€ μ›Ή μ„œλ²„ μ†Œν”„νŠΈμ›¨μ–΄λ‘œ 정적 μ›Ήμ‚¬μ΄νŠΈ ν˜ΈμŠ€νŒ…μ„ μœ„ν•΄ λ§Œλ“€μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€. -p μ˜΅μ…˜μ€ 둜컬호슀트의 ν¬νŠΈμ™€ μ»¨ν…Œμ΄λ„ˆμ˜ 포트λ₯Ό μ—°κ²°ν•©λ‹ˆλ‹€. 818ν¬νŠΈκ°€ 둜컬호슀트의 포트이고, 80λ²ˆμ€ μ»¨ν…Œμ΄λ„ˆμ˜ ν¬νŠΈμž…λ‹ˆλ‹€. μ΄λ ‡κ²Œ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•œ ν›„ 127.0.0.1:818 ν˜Ήμ€ localhost:818을 톡해 μ›Ήμ„œλ²„κ°€ μž‘λ™ν•˜κ³  μžˆλŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 

 

docker container cp

docker container cp ./ μ»¨ν…Œμ΄λ„ˆ_이름:/usr/local/apache2/htdocs/

μ„œλ²„κ°€ μ •μƒμ μœΌλ‘œ μ—΄λ €μžˆλ‹€λ©΄ μœ„μ˜ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•¨μœΌλ‘œμ¨ μ•ž 경둜의 νŒŒμΌμ„ λ’€ κ²½λ‘œμ— λ³΅μ‚¬ν•©λ‹ˆλ‹€.

 

μ΄λ ‡κ²Œ 기쑴의 이미지에 μƒˆλ‘œμš΄ νŒŒμΌμ„ μΆ”κ°€ν•œ μ»¨ν…Œμ΄λ„ˆλ₯Ό 이미지 파일둜 λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이럴 경우 이전에 μž‘μ—…ν–ˆλ˜ λ‚΄μš©μ„ λ‹€μ‹œ μˆ˜ν–‰ν•˜μ§€ μ•Šμ•„λ„ 되며 배포 및 관리가 μœ μš©ν•΄μ§‘λ‹ˆλ‹€. 크게 commitκ³Ό build, μ΄λ ‡κ²Œ 두 κ°€μ§€ 방법이 μžˆμŠ΅λ‹ˆλ‹€.

 

docker container commit

docker container commit μ»¨ν…Œμ΄λ„ˆ_이름 이미지_이름:νƒœκ·Έ
docker run --name μ»¨ν…Œμ΄λ„ˆ_이름 -p 900:80 이미지_이름:νƒœκ·Έ

첫번째 쀄 λͺ…λ Ήμ–΄μ—μ„œμ˜ commit을 ν™œμš©ν•˜μ—¬ ν˜„μž¬ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ΄λ―Έμ§€λ‘œ μ €μž₯ν•©λ‹ˆλ‹€. 이후 λ§Œλ“  이미지λ₯Ό λ‘λ²ˆμ§Έ 쀄 λͺ…λ Ήμ–΄λ₯Ό ν™œμš©ν•΄μ„œ μƒˆλ‘œμš΄ μ»¨ν…Œμ΄λ„ˆλ₯Ό λ§Œλ“€μ–΄ 900포트둜 둜컬호슀트의 포트λ₯Ό μ—°κ²°ν•©λ‹ˆλ‹€.

 

docker container build

docker build --tag μ»¨ν…Œμ΄λ„ˆ_이름 이미지_이름:νƒœκ·Έ
docker run --name μ»¨ν…Œμ΄λ„ˆ_이름 -p 901:80 이미지_이름:νƒœκ·Έ

buildλ₯Ό μ΄μš©ν•΄μ„œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ΄λ―Έμ§€λ‘œ μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

 

docker exec

dcker exec -it μ»¨ν…Œμ΄λ„ˆ_이름 bash

μœ„μ˜ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄ μ»¨ν…Œμ΄λ„ˆ μ•ˆμ—μ„œ bash shell을 μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. shell μ•ˆμ—μ„œ nano 에디터λ₯Ό ν™œμš©ν•΄μ„œ νŒŒμΌμ„ μˆ˜μ •ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

 

docker-compose CLI

두 개 μ΄μƒμ˜ Docker Imageλ₯Ό 닀루고 싢을 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€. λ¨Όμ € docker-compose.yaml 파일 μ•ˆμ— λ‹€μŒκ³Ό 같이 μž‘μ„±ν•©λ‹ˆλ‹€.

version: '3.8'

services:
  nginx:
    image: sebcontents/client
    restart: 'always'
    ports:
      - "8080:80"
    container_name: client

  node:
    image: sebcontents/server
    restart: 'always'
    ports:
      - "5000:3000"
    container_name: server

이후 μ•„λž˜μ™€ 같은 λͺ…령어듀을 μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

docker-compose up -d #docker-compose.yaml에 μ •μ˜λœ 이미지λ₯Ό λ°±κ·ΈλΌμš΄λ“œλ‘œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
docker-compose down #docker-compose.yaml에 μ •μ˜λœμ΄λ―Έμ§€λ₯Ό μ΄μš©ν•΄ μ‹€ν–‰λœ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ’…λ£Œν•©λ‹ˆλ‹€.
docker-compose up {νŠΉμ •μ΄λ―Έμ§€} #νŠΉμ • μ΄λ―Έμ§€λ§Œ μ»¨ν…Œμ΄λ„ˆλ‘œ μ‹€ν–‰ν•©λ‹ˆλ‹€.