Docker

Docker

Tags
Tech
Published
December 23, 2022
Author

Docker

  • ๋„์ปค๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค ๊ฐ€์ƒํ™” ํ”Œ๋žซํผ
  • ๋ ˆ์ด์–ด ์ €์žฅ ๋ฐฉ์‹

์ปจํ…Œ์ด๋„ˆ

๊ฒฉ๋ฆฌ๋œ ๊ณต๊ฐ„์—์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๊ธฐ์ˆ 

์ด๋ฏธ์ง€

์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์— ํ•„์š”ํ•œ ํŒŒ์ผ๊ณผ ์„ค์ •๊ฐ’ ๋“ฑ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”๊ฒƒ

Dokerfile

์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ์œ„ํ•ด์„œ ํŒŒ์ผ์— ์ž์ฒด DSL(Domain-specific language)์–ธ์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๊ณผ์ •์„ ์ž‘์„ฑ

๋„์ปค ์‹คํ–‰

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
์˜ต์…˜
์„ค๋ช…
-d
detached mode ํ”ํžˆ ๋งํ•˜๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ชจ๋“œ
-p
ํ˜ธ์ŠคํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌํŠธ๋ฅผ ์—ฐ๊ฒฐ(ํฌ์›Œ๋”ฉ)
-v
ํ˜ธ์ŠคํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ์˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐ(๋งˆ์šดํŠธ)
-e
์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •
-name
์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ์„ค์ •
-rm
ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ์‹œ ์ปจํ…Œ์ด๋„ˆ ์ž๋™ ์ œ๊ฑฐ
-it
-i์™€ -t๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•œ ๊ฒƒ์œผ๋กœ ํ„ฐ๋ฏธ๋„ ์ž…๋ ฅ์„ ์œ„ํ•œ ์˜ต์…˜
-link
์ปจํ…Œ์ด๋„ˆ ์—ฐ๊ฒฐ[์ปจํ…Œ์ด๋„ˆ๋ช…:๋ณ„์นญ]

๋„์ปค ๊ธฐ๋ณธ ๋ช…๋ น์–ด

์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก ํ™•์ธํ•˜๊ธฐ(ps)

docker ps [options]

์ปจํ…Œ์ด๋„ˆ ์ค‘์ง€ํ•˜๊ธฐ(stop)

docker stop [options] CONTAINER [containerโ€ฆ]

์ปจํ…Œ์ด๋„ˆ ์ œ๊ฑฐํ•˜๊ธฐ(rm)

docker rm [options] CONTAINER [containerโ€ฆ]

์ด๋ฏธ์ง€ ๋ชฉ๋ก ํ™•์ธํ•˜๊ธฐ(images)

docker images [options] [repository[:TAG]]

์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ(pull)

docker pull [options] NAME[:TAG|@DIGEST]

์ด์ง€์ง€ ์‚ญ์ œํ•˜๊ธฐ(rmi)

docker rmi [options] IMAGE [image..]

์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ ๋ณด๊ธฐ(logs)

docker logs [options] CONTAINER

์ปจํ…Œ์ด๋„ˆ ๋ช…๋ น์–ด ์‹คํ–‰ํ•˜๊ธฐ(exec)

docker exec [options] CONTAINER COMMAND [ARGโ€ฆ]

์ปจํ…Œ์ด๋„ˆ ์—…๋ฐ์ดํŠธ

๋„์ปค์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๋ ค๋ฉด ์ƒˆ ๋ฒ„์ „์˜ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด(pull)๋ฐ›๊ณ  ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œ(stop,ย rm)ํ•œ ํ›„ ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰(run)

Docker Compose

๋„์ปค๋Š” ๋ณต์žกํ•œ ์„ค์ •์„ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ดย YAML๋ฐฉ์‹์˜ ์„ค์ •ํŒŒ์ผ์„ ์ด์šฉํ•œย Docker Compose๋ผ๋Š” ํˆด์„ ์ œ๊ณต
version: '2' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: wordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest volumes: - wp_data:/var/www/html ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_PASSWORD: wordpress volumes: db_data: wp_data:

๋„์ปค ์ด๋ฏธ์ง€ ๋งŒ๋“ค๊ธฐ

Docker build

docker build [options] PATH | URL | -
docker build -t app .

Dockerfile ๊ธฐ๋ณธ ๋ช…๋ น์–ด

FROM

๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์ €์žฅ
FROM <image>:<tag> FROM ubuntu:16.04

MAINTAINER

Dockerfile์„ ๊ด€๋ฆฌํ•˜๋Š” ์‚ฌ๋žŒ์˜ ์ด๋ฆ„ ๋˜๋Š” ์ด๋ฉ”์ผ ์ •๋ณด๋ฅผ ์ž‘์„ฑ
MAINTAINER <name> MAINTAINER subicura@subicura.com

COPY

ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ด๋ฏธ์ง€๋กœ ๋ณต์‚ฌ
COPY <src>... <dest> COPY . /usr/src/app

ADD

src์— ํŒŒ์ผ ๋Œ€์‹  URL์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๊ณ  src์— ์••์ถ• ํŒŒ์ผ์„ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์••์ถ• ํ•ด์ œํ›„ ๋ณต์‚ฌ ๋จ
ADD <src>... <dest> ADD . /usr/src/app

RUN

์‹คํ–‰
RUN <command> RUN ["executable", "param1", "param2"] RUN bundle install

CMD

์‹คํ–‰ ํ›„ ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์–ด ์ •์˜
CMD ["executable","param1","param2"] CMD command param1 param2 CMD bundle exec ruby app.rb

WORKDIR

WORKDIR /path/to/workdir

EXPOSE

์ปจ๋„ค์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜์—ˆ์„ ๋•Œ ์š”์ฒญ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ํฌํŠธ๋ฅผ ์ง€์ •
EXPOSE <port> [<port>...] EXPOSE 4567

VOLUME

์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€์— ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๋งˆ์šดํŠธ ํ•  ๋•Œ ์‚ฌ์šฉ
VOLUME ["/data"]

ENV

์ปจํ…Œ์ด๋„ˆ์— ์‚ฌ์šฉํ•  ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ง€์ •
ENV <key> <value> ENV <key>=<value> ... ENV DB_URL mysql
ย 
ย 
์ดˆ๋ณด๋ฅผ ์œ„ํ•œ ๋„์ปค ์•ˆ๋‚ด์„œ - ์„ค์น˜ํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ํ•˜๊ธฐ
์ด ๊ธ€์€ ์ดˆ๋ณด๋ฅผ ์œ„ํ•œ ๋„์ปค ์•ˆ๋‚ด์„œ - ์„ค์น˜๋ถ€ํ„ฐ ๋ฐฐํฌ๊นŒ์ง€ 2๋ฒˆ์งธ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ์—” ๋„์ปค ์„ค์น˜๋ถ€ํ„ฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‘˜๋Ÿฌ๋ณด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋„์ปค์— ๋Œ€ํ•ด 1๋„ ๋ชจ๋ฅด๋Š” ๋ถ„๋“ค์„ ์œ„ํ•ด ์•„์ฃผ ๊ฐ€๋ณ๊ฒŒ ์ž์ฃผ ์“ฐ๋Š” ๋ช…๋ น์–ด๋งŒ ๋‹ค๋ฃจ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ช…๋ น์–ด๊ฐ€ ๊ถ๊ธˆํ•˜์‹  ๋ถ„์€ ์—ฌ๊ธฐ ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”. ๋„์ปค๋Š” ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์ด๋ฏ€๋กœ macOS๋‚˜ windows์— ์„ค์น˜ํ•  ๊ฒฝ์šฐ ๊ฐ€์ƒ๋จธ์‹ ์— ์„ค์น˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
์ดˆ๋ณด๋ฅผ ์œ„ํ•œ ๋„์ปค ์•ˆ๋‚ด์„œ - ์„ค์น˜ํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ํ•˜๊ธฐ