Post

๐Ÿ‹ Docker ์ž…๋ฌธ โ…ก - ๋ช…๋ น์–ด ๋ฐ ์‹ค์Šต

๐Ÿ‹ Docker ์ž…๋ฌธ โ…ก - ๋ช…๋ น์–ด ๋ฐ ์‹ค์Šต

๐Ÿ“˜ ใ€Ž๊ทธ๋ฆผ๊ณผ ์‹ค์Šต์œผ๋กœ ๋ฐฐ์šฐ๋Š” Docker & ์ฟ ๋ฒ„๋„คํ‹ฐ์Šคใ€๋ฅผ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

Docker ์—”์ง„ ์‹คํ–‰ ๋ฐ ์ข…๋ฃŒ

  • Docker ์—”์ง„์€ ์ปดํ“จํ„ฐ๋ฅผ ๋ถ€ํŒ… ํ•  ๋•Œ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Container๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค.
  • Docker ์—”์ง„์ด ์ž‘๋™ ์ค‘์ด๋”๋ผ๋„ Container๋ฅผ ์‹คํ–‰ ์ค‘์ด ์•„๋‹ˆ๋ผ๋ฉด ์ปดํ“จํ„ฐ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฑฐ์˜ ์ฐจ์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • Docker ์—”์ง„ ์‹คํ–‰ : Docker Desktop ์‹คํ–‰
  • Docker ์—”์ง„ ์ข…๋ฃŒ : ์ž‘์—…ํ‘œ์‹œ์ค„ ์šฐ์ธก์˜ Task-tray์—์„œ Docker DeskTop ์•„์ด์ฝ˜ ์šฐํด๋ฆญ ํ›„ Quit Docker Desktopย ํด๋ฆญ

Docker ๋ช…๋ น์–ด

  • Container๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ชจ๋“  ๋ช…๋ น์–ด๋Š” docker๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
  • docker ๋ช…๋ น์–ด ๋’ค๋กœ ๋ฌด์—‡์„, ์–ด๋–ป๊ฒŒ, ๋Œ€์ƒ ์ˆœ์œผ๋กœ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.
  • ๊ธฐ๋ณธ์ ์ธ ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋ฅผ ๋ค๋‹ค.
1
2
# docker [์ƒ์œ„์ปค๋งจ๋“œ] ํ•˜์œ„์ปค๋งจ๋“œ [์˜ต์…˜] ๋Œ€์ƒ [์ธ์ž]
docker container run -d penguine
  • ์˜ต์…˜์€ ์ปค๋งจ๋“œ์— ์„ธ์„ธํ•œ ์„ค์ •์„ ์ง€์ •ํ•˜๋Š” ์šฉ๋„๋กœ ์“ฐ์ธ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰ํ•  ๋•Œ๋Š” -d, ํ‚ค๋ณด๋“œ๋กœ ์กฐ์ž‘ํ•˜๋ ค๋ฉด -iย ๋˜๋Š” -t`๋ฅผ ๋ถ™์ธ๋‹ค.
  • ์˜ต์…˜์€ -dit์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ธ์ž๋Š” ๋Œ€์ƒ์— ์ „๋‹ฌํ•  ๊ฐ’์„ ์ง€์ •ํ•œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฌธ์ž ์ฝ”๋“œ ๋˜๋Š” ํฌํŠธ ๋ฒˆํ˜ธ ๋“ฑ์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Docker Container ์ƒ์„ฑ, ์‚ญ์ œ, ์‹คํ–‰, ์ •์ง€

โœ… ์‹คํ–‰ - docker run image

  • docker image pull, docker container create, docker container start๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์ˆ˜ํ–‰ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค.
  • ํ•ด๋‹น ๋ฅผ ๋‹ค์šด ๋ฐ›์€ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋จผ์ € Image`๋ฅผ ๋‹ค์šด ๋ฐ›๋Š”๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค Image๋ฅผ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ -eย ์˜ต์…˜์„ ํ†ตํ•ด ๋ฃจํŠธ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

โœ… ์ •์ง€ - docker stop container

  • Container๋ฅผ ํ๊ธฐํ•˜๋ ค๋ฉด ๋จผ์ € Container๋ฅผ ์ •์ง€ํ•ด์•ผ ํ•œ๋‹ค.

โœ… ์‚ญ์ œ - docker rm container

  • ์‹คํ–‰ ์ค‘์ธ Container๋ฅผ ์‚ญ์ œ ์‹œ๋„ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ Container๊ฐ€ ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค.

Container ์ข…๋ฅ˜

  • -it๋Š” Container ๋‚ด๋ถ€ ํ„ฐ๋ฏธ๋„๋กœ ์ ‘์† ๋˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.
  • ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋˜๋Š” Container๋Š” ์‹คํ–‰๋˜์ž๋งˆ์ž ์ข…๋ฃŒ๋˜๋ฏ€๋กœ Container๊ฐ€ ํ„ฐ๋ฏธ๋„์˜ ์ œ์–ด๋ฅผ ์ฐจ์ง€ํ•˜๋”๋ผ๋„ ์ผ์‹œ์ ์ธ ๊ฒƒ์ด๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ํ•˜์ง€๋งŒ ๊ณง์žฅ ์ข…๋ฃŒ๋˜๋Š” ์‹œ์Šคํ…œ์ด๋ผ๋ฉด ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์† ๋Œˆ ์ผ๋„ ์—†์œผ๋ฏ€๋กœ ํ•„์š”์—†๋Š” ์˜ต์…˜์ด ๋œ๋‹ค.
  • ๋ฐ๋ชฌ์ฒ˜๋Ÿผ ๊ณ„์†์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ์ €์ ˆ๋กœ ์ข…๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ•œ๋ฒˆ ํ„ฐ๋ฏธ๋„์˜ ์ œ์–ด๋ฅผ ๋„˜๊ธฐ๋ฉด ์ด๋ฅผ ๋˜์ฐพ์•„์˜ค๊ธฐ๊ฐ€ ๋ฒˆ๊ฑฐ๋กญ๋‹ค.

Container ๋ชฉ๋ก ์ถœ๋ ฅ

  • docker ps - ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ Container ๋ชฉ๋ก์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • -aย ์˜ต์…˜ - ํ˜„์žฌ ์กด์žฌํ•˜๋Š” ๋ชจ๋“  Container ๋ชฉ๋ก์„ ์ถœ๋ ฅํ•œ๋‹ค.

Container์˜ ํ†ต์‹ 

  • ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ Container์˜ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด Container๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค. ๋ฐ”๋กœ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • Apacheย ์›น ์„œ๋ฒ„๋Š” 80๋ฒˆ ํฌํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
  • ํ•˜์ง€๋งŒ Container ์†์— ๊ฒฉ๋ฆฌ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์™ธ๋ถ€์—์„œ๋Š” ๋‹ค๊ฐ€๊ฐˆ ์ˆ˜ ์—†๋‹ค.
  • ์ด ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด Container๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.
1
docker run --name container01 -d -p 8080:80 httpd
  • ์ด์ œ๋Š” ์™ธ๋ถ€์—์„œ 8080ย ํฌํŠธ ๋ฒˆํ˜ธ์— ์ ‘๊ทผํ•˜๋ฉด ํ˜ธ์ŠคํŠธ PC๊ฐ€ Container ์† Apache์— ์š”์ฒญ์„ ์ „๋‹ฌํ•ด์ค€๋‹ค.
  • ๋งŒ์•ฝ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Container๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด ํ˜ธ์ŠคํŠธ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๋ชจ๋‘ ๋‹ค๋ฅด๊ฒŒ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • Container ํฌํŠธ ๋ฒˆํ˜ธ๋Š” Image ์ œ์ž‘์ž๊ฐ€ ์ •ํ•œ ๋ฒˆํ˜ธ๋กœ ํ•ด์•ผ ํ•œ๋‹ค.

Image ์‚ญ์ œ

  • Image๋ฅผ ํ†ตํ•ด Container๋ฅผ ๋งŒ๋“ค์–ด ๋‚ธ ํ›„ Container๋ฅผ ์‚ญ์ œํ•œ๋‹ค๊ณ  ํ•ด์„œ Image๊นŒ์ง€ ๊ฐ™์ด ์ œ๊ฑฐ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • Image๊ฐ€ ๋ˆ„์ ๋˜๋ฉด ์Šคํ† ๋ฆฌ์ง€ ์šฉ๋Ÿ‰์„ ์••๋ฐ•ํ•˜๋ฏ€๋กœ ์ œ๋•Œ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • ํ•ด๋‹น Image๋กœ ์ƒ์„ฑ๋œ Container๊ฐ€ ์žˆ๋‹ค๋ฉด Image๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ Container๋ฅผ ์‚ญ์ œ ํ›„ Image๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค.
  • Image๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” docker image rmย ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ด ์ปค๋งจ๋“œ๋Š” docker rm๊ณผ ๊ฐ™์ด ์ƒ๋žตํ•  ์ˆ˜ ์—†๋‹ค.
  • docker rm์€ docker container rm์˜ ์ƒ๋žตํ˜•์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Image ํ™•์ธ

1
docker image ls
  • docker ps์™€๋Š” ๋‹ฌ๋ฆฌ ์‹คํ–‰ ์ค‘, ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ ์—†์œผ๋ฏ€๋กœ -a ์˜ต์…˜๋„ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ Image๊ฐ€ ์กด์žฌํ•  ๋•Œ ํŠน์ • ๋ฒ„์ „ Image๋ฅผ ์‚ญ์ œํ•  ๊ฒฝ์šฐ docker image rm httpd:2.2์™€ ๊ฐ™์ด ๋ฒ„์ „์„ ํŠน์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

Docker ๋„คํŠธ์›Œํฌ

1
2
3
4
5
6
7
8
# ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ
docker network create [๋„คํŠธ์›Œํฌ ์ด๋ฆ„]

# ๋„คํŠธ์›Œํฌ ํ™•์ธ
docker network ls

# ๋„คํŠธ์›Œํฌ ์‚ญ์ œ
docker network rm [๋„คํŠธ์›Œํฌ ์ด๋ฆ„]
  • Container๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋‘”๋‹ค๊ณ  ํ•ด์„œ ์ž๋™์œผ๋กœ ๋„คํŠธ์›Œํฌ๊ฐ€ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๋Š”๋‹ค.

์›Œ๋“œํ”„๋ ˆ์Šค ๊ตฌ์ถ• ์‹ค์Šต

โœ… ๊ฐœ์š”

  • ์›Œ๋“œํ”„๋ ˆ์Šค Image์™€ MySQL Image๋ฅผ ํ†ตํ•ด ๋‘ ๊ฐœ์˜ Container๋ฅผ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ํ•œ๋‹ค.
  • ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ๋‘ Container๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค.

โœ… ๊ณผ์ •

1
2
3
4
5
6
7
8
# 1. ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ
docker network create wordpress000net1

# 2. MySQL `Image` ์‹คํ–‰
docker run --name mysql000ex11 -dit --net=wordpress000net1 -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_DATABASE=wordpress000db -e MYSQL_USER=์•„์ด๋”” -e MYSQL_PASSWORD=ํŒจ์Šค์›Œ๋“œ mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

# 3. Wordpress `Image` ์‹คํ–‰
docker run --name wordpress000ex12 -dit --net=wordpress000net1 -p 8085:80 -e WORDPRESS_DB_HOST=mysql000ex11 -e WORDPRESS_DB_NAME=wordpress000db -e WORDPRESS_DB_USER=์•„์ด๋”” -e WORDPRESS_DB_PASSWORD=ํŒจ์Šค์›Œ๋“œ wordpress

๋ ˆ๋“œ๋งˆ์ธ ๊ตฌ์ถ• ์‹ค์Šต

1
2
3
4
5
6
7
8
# 1. ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ
docker network create redmine000net3

# 2. MariaDB `Image` ์‹คํ–‰
docker run --name mariadb000ex15 -dit --net=redmine000net3 -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_DATABASE=redmine000db MYSQL_USER=์•„์ด๋”” -e MYSQL_PASSWORD=ํŒจ์Šค์›Œ๋“œ mariadb --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

# 3. Redmine `Image` ์‹คํ–‰
docker run -dit --name redmine000ex16 --network redmin000net3 -p 8087:3000 -e REDMINE_DB_MYSQL=mariadb000ex15 -e REDMINE_DB_DATABASE=redmine000db -e REDMINE_DB_USERNAME=์•„์ด๋”” -e REDMINE_DB_PASSWORD=ํŒจ์Šค์›Œ๋“œ redmine
  • http://localhost:8087 ์ ‘์†ํ•˜์—ฌ ๋™์ž‘์„ ํ™•์ธํ•˜์ž.

ํšŒ๊ณ 

1
2
3
4
5
6
7
8
9
10
11
# `Container` ๋ชจ๋‘ ์ค‘์ง€
docker stop $(docker ps -a -q)

# `Container` ๋ชจ๋‘ ์‚ญ์ œ
docker rm $(docker ps -a -q)

# `Image` ๋ชจ๋‘ ์‚ญ์ œ
docker rmi -f $(docker images -q)

# ์•ˆ ์“ฐ๋Š” ๋ชจ๋“  ์ž์› ์‚ญ์ œ
docker system prune -a
  • ํ•„์ž๋Š” ์œ„ ๋ช…๋ น์–ด๋“ค์„ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ๋‹ค.
This post is licensed under CC BY 4.0 by the author.