λ„μ»€λž€ κ°„λ‹¨ν•˜κ²Œ 말해 μ„œλ²„ν™˜κ²½μ—μ„œμ˜ λ‹€μ–‘ν•œ ν”„λ‘œκ·Έλž¨, μ‹€ν–‰ν™˜κ²½μ„ μ»¨ν…Œμ΄λ„ˆλΌλŠ” 격리된 ν™˜κ²½μ—μ„œ μ‹€ν–‰ν•  수 있게 ν•΄μ£ΌλŠ” μ»¨ν…Œμ΄λ„ˆ 기반의 μ˜€ν”ˆμ†ŒμŠ€ 가상화 ν”Œλž«νΌ μž…λ‹ˆλ‹€.

이λ₯Ό μ΄μš©ν•˜λ©΄ λ³΅μž‘ν•œ μ„œλ²„ν™˜κ²½μ„ μ½”λ“œλ‘œ μ‰½κ²Œ 관리할 수 있고 μ•ˆμ •μ μΈ λ°°ν¬ν™˜κ²½ (무쀑단 배포 λ“±) ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ 이번 κΈ€μ—μ„œλŠ” λ„μ»€μ—μ„œ 이미지λ₯Ό λ°›κ³  μ»¨ν…Œμ΄λ„ˆλ₯Ό μƒμ„±ν•˜κ³  μ‚­μ œ ν•  λ•Œ, μžμ£Όμ“°λŠ” κΈ°λ³Έ λͺ…λ Ήμ–΄λ₯Ό μ•Œμ•„λ³΄λ € ν•©λ‹ˆλ‹€ :)

docker μ„€μΉ˜

λ¦¬λˆ…μŠ€ μžλ™ μ„€μΉ˜ 슀크립트

$ sudo wget -qO- https://get.docker.com/ | sh

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sh get-docker.sh

μš°λΆ„νˆ¬

$ sudo apt-get update
$ sudo apt-get install docker.io
$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

μœˆλ„μš°, λ§₯

Docker for windows, Docker for Mac μ„€μΉ˜

πŸ“œ 이미지 κ΄€λ ¨

λ„μ»€μ—μ„œλŠ” 도컀 이미지λ₯Ό μ΄μš©ν•˜μ—¬ μ»¨ν…Œμ΄λ„ˆλ₯Ό 생성할 수 μžˆλŠ”λ°,

도컀 이미지λ₯Ό μ΄μš©ν•˜λ©΄ 이미지에 μ„€μ •ν•΄λ‘” λŒ€λ‘œ μ»¨ν…Œμ΄λ„ˆμ˜ κ΅¬μ„±ν™˜κ²½μ„ μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이미지 λͺ©λ‘ 보기

$ sudo docker images

이미지 검색

$ sudo docker search [이미지 이름]

이미지 λ°›κΈ°

$ sudo docker pull [이미지 이름]:[버전]

버전: latest λ₯Ό μ“°λ©΄ μ΅œμ‹  λ²„μ „μœΌλ‘œ λ°›μ„μˆ˜ μžˆλ‹€.

이미지 μ‚­μ œ

$ sudo docker rmi [이미지 id]

μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‚­μ œν•˜κΈ° 전에 이미지λ₯Ό μ‚­μ œ ν• λ•Œ, -f μ˜΅μ…˜μ„ λΆ™μ–΄λ©΄ μ»¨ν…Œμ΄λ„ˆλ„ κ°•μ œ μ‚­μ œκ°€ κ°€λŠ₯ν•˜λ‹€.

$ sudo docker rmi -f [이미지 id]

πŸ“¦ μ»¨ν…Œμ΄λ„ˆ κ΄€λ ¨

λ‹€μ–‘ν•œ ν”„λ‘œκ·Έλž¨(nginx, database, WAS λ“±)을 μ»¨ν…Œμ΄λ„ˆ λΌλŠ” 격리된 ν™˜κ²½μ„ μ΄μš©ν•˜μ—¬ μ‹€ν–‰μ‹œν‚¬μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

μ»¨ν…Œμ΄λ„ˆ λͺ©λ‘ 보기

$ sudo docker ps

μ˜΅μ…˜

  • -a : λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆ λͺ©λ‘ 좜λ ₯

μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰

$ sudo docker run [options] image[:TAG|@DIGEST] [COMMAND] [ARG...]
μ˜΅μ…˜ μ„€λͺ…
-d detached mode ν”νžˆ λ§ν•˜λŠ” λ°±κ·ΈλΌμš΄λ“œ λͺ¨λ“œ
-p ν˜ΈμŠ€νŠΈμ™€ μ»¨ν…Œμ΄λ„ˆμ˜ 포트λ₯Ό μ—°κ²° (ν¬μ›Œλ”©)
-v ν˜ΈμŠ€νŠΈμ™€ μ»¨ν…Œμ΄λ„ˆμ˜ 디렉토리λ₯Ό μ—°κ²° (마운트)
-e μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œ μ‚¬μš©ν•  ν™˜κ²½λ³€μˆ˜ μ„€μ •
--name μ»¨ν…Œμ΄λ„ˆ 이름 μ„€μ •
--it -i와 -tλ₯Ό λ™μ‹œμ— μ‚¬μš©ν•œ κ²ƒμœΌλ‘œ 터미널 μž…λ ₯을 μœ„ν•œ μ˜΅μ…˜ (μ»¨ν…Œμ΄λ„ˆμ˜ ν‘œμ€€ μž…λ ₯κ³Ό 둜컬 μ»΄ν“¨ν„°μ˜ ν‚€λ³΄λ“œ μž…λ ₯을 μ—°κ²°)
--rm ν”„λ‘œμ„ΈμŠ€ μ’…λ£Œμ‹œ μ»¨ν…Œμ΄λ„ˆ μžλ™ 제거
--link μ»¨ν…Œμ΄λ„ˆ μ—°κ²° [μ»¨ν…Œμ΄λ„ˆ λͺ…:별칭]
  • ex) $ sudo docker run -i -t --name server ubuntu:latest /bin/bash

μ»¨ν…Œμ΄λ„ˆ μ‹œμž‘

$ sudo docker start [μ»¨ν…Œμ΄λ„ˆ id λ˜λŠ” name]

μ»¨ν…Œμ΄λ„ˆ μž¬μ‹œμž‘

$ sudo docker restart [μ»¨ν…Œμ΄λ„ˆ id λ˜λŠ” name]

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

$ sudo docker attach [μ»¨ν…Œμ΄λ„ˆ id λ˜λŠ” name]

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

$ sudo docker stop [μ»¨ν…Œμ΄λ„ˆ id λ˜λŠ” name]
  • Bash Shellμ—μ„œ exit λ˜λŠ” Ctrl + Dλ₯Ό μž…λ ₯ν•˜λ©΄ μ»¨ν…Œμ΄λ„ˆκ°€ μ •μ§€λœλ‹€.

  • Ctrl + P, Ctrl + Qλ₯Ό μ°¨λ‘€λŒ€λ‘œ μž…λ ₯ν•˜μ—¬ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ •μ§€ν•˜μ§€ μ•Šκ³ , μ»¨ν…Œμ΄λ„ˆμ—μ„œ λΉ μ Έλ‚˜μ˜¨λ‹€.

μ»¨ν…Œμ΄λ„ˆ μ‚­μ œ

$ sudo docker rm [μ»¨ν…Œμ΄λ„ˆ id λ˜λŠ” name]
// λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆ μ‚­μ œ
$ sudo docker rm `docker ps -a -p`

sudo 없이 Linux λͺ…λ Ήμ–΄ μ“°κΈ°

$ sudo usermod -aG docker $USER # ν˜„μž¬ 접속쀑인 μ‚¬μš©μžμ—κ²Œ κΆŒν•œμ£ΌκΈ°

$ sudo usermod -aG docker your-user # your-user μ‚¬μš©μžμ—κ²Œ κΆŒν•œμ£ΌκΈ°

μ‚¬μš©μžκ°€ 둜그인 쀑 일 λ•Œ, λ‹€μ‹œ λ‘œκ·ΈμΈν•˜λ©΄ κΆŒν•œμ΄ μ μš©λœλ‹€.

🀞 마치며...

κ°„λ‹¨ν•˜κ²Œ 도컀와 κ΄€λ ¨λœ κΈ°λ³Έ λͺ…령어에 λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 평생 λ„μŠ€μ°½μ— 도컀 λͺ…λ Ήμ–΄λ₯Ό μΉ  순 μ—†κΈ° λ•Œλ¬Έμ—, λ‹€μŒ κΈ€μ—μ„œλŠ” 도컀λ₯Ό λ”μš± νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•΄μ£ΌλŠ” 도컀 guiνˆ΄μ— λŒ€ν•΄ ν¬μŠ€νŒ… 해보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.