[Docker] ์„ค์น˜

ss0510sยท2024๋…„ 5์›” 23์ผ
0

Infra

๋ชฉ๋ก ๋ณด๊ธฐ
4/6

Docker

๐Ÿ’ก ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ์— ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปจํ…Œ์ด๋„ˆ๋กœ์„œ ์ข€ ๋” ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ

  • ์ด๋ฏธ์ง€์˜ ์šฉ๋Ÿ‰์ด ๊ฐ€์ƒ๋จธ์‹ ์— ๋น„ํ•ด ๋Œ€ํญ๊ฐ์†Œ
    • ์ปจํ„ฐ์ด๋„ˆ ์•ˆ์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์‹คํ–‰ ํŒŒ์ผ๋งŒ ์กด์žฌํ•œ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ๊ฐ€ ํŽธํ•ด์ง„๋‹ค.
    • ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋Š” ํ˜ธ์ŠคํŠธ OS ์œ„์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒฉ๋ฆฌ๋œ ๊ณต๊ฐ„์ด๊ธฐ ๋•Œ๋ฌธ์— ์ปจํ…Œ์ด๋„ˆ ์ž์ฒด์— ํŠน๋ณ„ํ•œ ๊ถŒํ•œ์„ ์ฃผ์ง€ ์•Š๋Š” ํ•œ ํ˜ธ์ŠคํŠธ OS์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š์•„ ๋…๋ฆฝ๋œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๋ณด์žฅ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋…๋ฆฝ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์ด ๋†’์•„์ง„๋‹ค.
    • ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์—๊ฒŒ ๋…๋ฆฝ๋œ ํ™˜๊ฒฝ์„ ๋™์‹œ์— ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ๊ตฌ์กฐ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๊ฐ€์ƒํ™” ๊ธฐ์ˆ 

Docker ์„ค์น˜

์„ค์น˜ ์ „ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜

๐Ÿ’ก ์†Œํ”„ํŠธ์›จ์–ด ์ €์žฅ์†Œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํ•ด๋‹น ์ €์žฅ์†Œ์™€ ์•ˆ์ „ํ•œ ํ†ต์‹ ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜

sudo apt-get -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
  • apt-transport-https: ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ https๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋ฐ ํŒจํ‚ค์ง€์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ์•ˆ์ „ํ•œ ํ†ต์‹  ๋ณด์žฅ
  • ca-certificates: ์ธ์ฆ์„œ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ํ•„์ˆ˜ ํŒจํ‚ค์ง€ โ‡’ SSL ์ธ์ฆ์„œ์˜ ์‹ ๋ขฐ์„ฑ์„ ํ™•์ธ
    • certificate authority์—์„œ ๋ฐœํ–‰๋˜๋Š” ๋””์ง€ํ„ธ ์„œ๋ช….
    • SSL ์ธ์ฆ์„œ์˜ PEM ํŒŒ์ผ์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด SSL ๊ธฐ๋ฐ˜ ์•ฑ์ด SSL ์—ฐ๊ฒฐ์ด ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ
    • HTTPS ์—ฐ๊ฒฐ์— ์‚ฌ์šฉ
  • curl: ํŠน์ • ์›น ์‚ฌ์ดํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ‚ค์ง€
  • gnupg-agent: OpenPGP ํ‘œ์ค€ ๊ทœ๊ฒฉ์˜ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์„ ์•”ํ˜ธํ™”ํ•˜๊ณ  ์„œ๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ค์ง€
  • software-properties-common: PPA๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
    • ์†Œํ”„ํŠธ์›จ์–ด ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ฐ˜์ ์ธ ๋„๊ตฌ ๋ชจ์Œ
    • PPA: Personal Package Archive(๊ฐœ์ธ ํŒจํ‚ค์ง€ ์ €์žฅ์†Œ)๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ์บ๋…ธ๋‹ˆ์ปฌ็คพ์˜ ์šฐ๋ถ„ํˆฌ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ํŒจํ‚ค์ง€ ์™ธ์˜ ์‚ฌ์ ์œผ๋กœ ๋งŒ๋“  ํŒจํ‚ค์ง€๋ฅผ ์˜๋ฏธํ•œ๋‹ค

Docker์— ๋Œ€ํ•œ GPC Key ์ธ์ฆ ์ง„ํ–‰

๐Ÿ’ก GPC Key๋Š” Docker ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ณต๊ฐœ ํ‚ค๋กœ, Docker์˜ ๊ณต์‹ ์ €์žฅ์†Œ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ด๋ฏธ์ง€ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • -f : ์˜ค๋ฅ˜๋ฐœ์ƒ์‹œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ x
  • -s : ์ง„ํ–‰์ •๋ณด๋‚˜ ์ง„ํ–‰๋ฅ  ํ‘œ์‹œ x
  • -S : ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์˜ค๋ฅ˜๋ฉ”์‹œ์ง€ ํ‘œ์‹œ
  • -L : ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๋‹น ์œ„์น˜๋กœ ์ด๋™
  • https://download.docker.com/linux/ubuntu/gpg : Docker ๊ณต์‹ GPG ํ‚ค๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•˜๋Š” URL
  • apt-key add - : GPG ํ‚ค๋ฅผ APT ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ช…๋ น์–ด
  • OK๊ฐ€ ๋–ด๋‹ค๋ฉด ์ •์ƒ์ ์œผ๋กœ ๋“ฑ๋ก์ด ๋˜์—ˆ๋‹ค๋Š” ๋œป์ด๋‹ค

Docker ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋“ฑ๋ก

  • add-apt-repository : ์‹œ์Šคํ…œ API ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์— ์ƒˆ๋กœ์šด ์ €์žฅ์†Œ ์ถ”๊ฐ€, Docker Engine ๋ฐ ๊ด€๋ จ ๋„๊ตฌ๋ฅผ ์„ค์น˜, ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐ ๊ด€๋ฆฌ
    • AMD64 ๊ณ„์—ด arch=amd64 - Windows, macOS ๋ฐ ๋ฆฌ๋ˆ…์Šค์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์šด์˜ ์ฒด์ œ
      sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    • ARM64 ๊ณ„์—ด arch=arm64 - ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜ ์šด์˜์ฒด์ œ
      sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    • deb : APT ์ €์žฅ์†Œ๊ฐ€ DEB ํŒจํ‚ค์ง€ ์‚ฌ์šฉ
    • https://download.docker.com/linux/ubuntu : Docker ํŒจํ‚ค์ง€๊ฐ€ ํ˜ธ์ŠคํŒ… ๋˜๋Š” ์ €์žฅ์†Œ์˜ URL
    • $(lsb_release -cs) ****: ํ˜„์žฌ Ubuntu ๋ฒ„์ „์˜ ์ฝ”๋“œ๋ช…์„ ๋™์ ์œผ๋กœ ๊ฐ€์ ธ์™€ Ubuntu ๋ฒ„์ „์— ๋งž๋Š” Docker ํŒจํ‚ค์ง€ ๋‹ค์šด๋กœ๋“œ
    • stable : ์‚ฌ์šฉํ•  docker ๋ฒ„์ „ ์ง€์ • - stable(์•ˆ์ •์ ์ธ) ๋ฒ„์ „

ํŒจํ‚ค์ง€ ๋ฆฌ์ŠคํŠธ ๊ฐฑ์‹ 

sudo apt-get -y update

Docker ํŒจํ‚ค์ง€ ์„ค์น˜

  • apt-get์„ ์ด์šฉํ•˜์—ฌ Docker๋ฅผ ์„ค์น˜ํ•œ๋‹ค
    • docker-ce: Docker Community Edition์˜ ์•ฝ์ž

      • Docker ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฒ„์ „์œผ๋กœ, ๊ฐœ๋ฐœ์ž ๋ฐ ๊ฐœ์ธ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ๋ฌด๋ฃŒ ์ œ๊ณต
      • Docker Engine์„ ํฌํ•จํ•˜๋ฉฐ, ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ, ๊ด€๋ฆฌํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ
    • docker-ce-cli: Docker Community Edition์˜ CLI ํ™˜๊ฒฝ์—์„œ ์ถ”๊ฐ€๋กœ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ํŒจํ‚ค์ง€

      • Docker Engine๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น ์ค„ ๋„๊ตฌ
      • ์‚ฌ์šฉ์ž๋Š” Docker CE CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ, ์ด๋ฏธ์ง€, ๋„คํŠธ์›Œํฌ ๋ฐ ๋ณผ๋ฅจ๊ณผ ๊ฐ™์€ Docker ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌ ๋ฐ ์ œ์–ด ๊ฐ€๋Šฅ
      • Docker CE CLI๋Š” Docker ๋ช…๋ น์–ด (docker run, docker build ๋“ฑ)๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ์„ฑ, ์‹คํ–‰, ๋นŒ๋“œ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰
    • containerd.io: Docker ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„, ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ ๋ฐ ์‹คํ–‰์„ ๋‹ด๋‹น

      sudo apt-get -y install docker-ce docker-ce-cli containerd.io

Docker ์ผ๋ฐ˜ ์œ ์ €์—๊ฒŒ ๊ถŒํ•œ ๋ถ€์—ฌ

  • Docker๋Š” ํ•ญ์ƒ root๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— sudo๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค
  • ์‚ฌ์šฉ์ž๋ฅผ docker ๊ทธ๋ฃน์— ์ถ”๊ฐ€ํ•˜์—ฌ sudo๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ docker ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค
    sudo usermod -aG docker ubuntu
    sudo chmod 666 /var/run/docker.sock
  • Docker ์„œ๋น„์Šค ์žฌ์‹œ์ž‘
    • ์ดํ›„, ์‚ฌ์šฉ์ž ์„ธ์…˜ ๋กœ๊ทธ์•„์›ƒ ๋ฐ ์žฌ๋กœ๊ทธ์ธ ํ•„์š”

      sudo service docker restart
      exit
  • Docker image ์ •๋ฆฌ
sh 'docker image prune -a -f

Docker Compose

๐Ÿ’ก ๋‹จ์ผ ์„œ๋ฒ„์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋กœ ์ •์˜ํ•ด ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฌถ์Œ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—… ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ๊ด€๋ฆฌ ๋„๊ตฌ

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋™์ž‘ํ•  ๋•Œ, ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•˜๋‚˜ ์”ฉ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค
  • ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ตฌ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด run ๋ช…๋ น์–ด๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉํ•ด๋„ ๋˜์ง€๋งŒ, ๋ฒˆ๊ฑฐ๋กญ๋‹ค
  • Docker Compose๋ฅผ ์ด์šฉํ•˜๋ฉด *.yaml ํŒŒ์ผ์„ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์„ ํ•œ ๋ฒˆ์— ๊ด€๋ฆฌํ•˜์—ฌ ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์ฒ˜๋Ÿผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค

Docker Compose ๋‹ค์šด๋กœ๋“œ

  • curl ๋ช…๋ น์„ ์ด์šฉํ•˜์—ฌ docker-compose ํŒจํ‚ค์ง€๋ฅผ /usr/local/bin/docker-compose ๋””๋ ‰ํ† ๋ฆฌ์— ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค
    sudo curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

/usr/local/bin/docker-compose ๊ถŒํ•œ ๋ณ€๊ฒฝ

  • chmod๋ฅผ ์ด์šฉํ•˜์—ฌ /usr/local/bin/docker-compose ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•ด ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹คํ–‰ ๊ถŒํ•œ์„ ์ถ”๊ฐ€์‹œํ‚จ๋‹ค
    sudo chmod +x /usr/local/bin/docker-compose
profile
๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด ์„ฑ์žฅํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€