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
ย
ย