Skip to content

Instantly share code, notes, and snippets.

@jungbin-kim
Last active October 31, 2017 11:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jungbin-kim/d0c8a41d3c72ebdace3c4d5acaa017e4 to your computer and use it in GitHub Desktop.
Save jungbin-kim/d0c8a41d3c72ebdace3c4d5acaa017e4 to your computer and use it in GitHub Desktop.
docker for MacOS by Brew
# Dockerfile์„ ๋งŒ๋“ค directory ์ƒ์„ฑ
$ mkdir OracleLinux7.2
# ์ƒ์„ฑํ•œ directory ๋‚ด, Dockefile ํŒŒ์ผ ์ƒ์„ฑ
$ cd OracleLinux7.2/
$ vi Dockerfile
##### Example Dockerfile #####
# Set up oracle linux 7.2
# Pull base image
FROM oraclelinux:7.2
#####
# Dockerfile์„ ์ด์šฉํ•œ image ๋นŒ๋“œ
# docker build [-t{Image ๋ช…} [:{Tag ๋ช…}]]{Dockerfile์ด ์กด์žฌํ•˜๋Š” directory ์•„๋ž˜์—์„œ๋Š” dockerfile์ด ์กด์žฌํ•˜๋Š” diretory์—์„œ ์‹คํ–‰ํ•˜์—ฌ '.'์ž„ }
$ docker build -t jb/oraclelinux:7.2 .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM oraclelinux:7.2
...
# ๋นŒ๋“œ๋œ image ํ™•์ธ
$ docker images
# ๋นŒ๋“œ๋œ image๋กœ container run
$ docker run --rm -it jb/oraclelinux:7.2 /bin/bash
# -p docker-machine port matching
# -p {์™ธ๋ถ€ ํฌํŠธ}:{๋‚ด๋ถ€ ํฌํŠธ}
# -v: mount host directory
# -v {host dir}:{container dir}
$ docker run --rm -it -p 9000:9000 -v ~/DockerMount:/mnt jb/oraclelinux:7.2 /bin/bash

Set up

brew๋กœ Docker์„ค์น˜

$ brew install docker docker-compose docker-machine xhyve docker-machine-driver-xhyve

# docker-machine-driver-xhyve need root owner and uid
$ sudo chown root:wheel $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve
$ sudo chmod u+s $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve

docker ๋‚ด ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

# macOS ๋‚ด์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” docker Machine์— SSH ์ ‘์†
$ docker-machine ssh dev

# ... docker machine ๋‚ด๋กœ ์ด๋™

# ubuntu ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ๋ฐ ์ปจํ…Œ์ด๋„ˆ ์ ‘์†
$ docker run --rm -it ubuntu /bin/bash

docker run ์˜ต์…˜

-it ์˜ต์…˜: ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ๋“ค์–ด๊ฐ€๊ธฐ ์œ„ํ•ด bash ์‰˜์„ ์‹คํ–‰ํ•˜๊ณ  ํ‚ค๋ณด๋“œ ์ž…๋ ฅ ๊ฐ€๋Šฅ

--rm ์˜ต์…˜: ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž๋™์œผ๋กœ ์‚ญ์ œ

Managing docker container

# ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ ํ™•์ธ
$ docker ps -a

# ์ข…๋ฃŒ๋œ ์ปจํ…Œ์ด๋„ˆ ๋‹ค์‹œ ์‹คํ–‰
$ docker restart {container id}

# ๋‹ค์‹œ ์‹คํ–‰๋œ ์ปจํ…Œ์ด๋„ˆ ์ ‘์†
$ docker attach {container id}

๊ฐœ๋…

docker

์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ ์†Œ์Šค ๊ฐ€์ƒํ™” ํ”Œ๋žซํผ [1] docker ๋‚ด๋ถ€๋Š” client์™€ host๋กœ ๋‚˜๋‰จ.

docker-machine-driver

xhyve: macOS์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์ƒํ™˜๊ฒฝ

docker-machine

Docker Machine์€ ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ์—์„œ Docker engine์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๊ฒŒํ•˜๊ณ , ๊ทธ ํ˜ธ์ŠคํŠธ๋“ค์„ docker-machine ๋ช…๋ น์–ด๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค. Machine์„ ์ด์šฉํ•˜์—ฌ ๋กœ์ปฌ Mac์ด๋‚˜ ์œˆ๋„์šฐ, ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ์ œ๊ณต์ž ๋“ฑ์—์„œ Docker host๋“ค์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. docker-machine ๋ช…๋ น์–ด๋กœ ๊ด€๋ฆฌ host๋ฅผ start, inspect, stop, restart๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ณ , docker client์™€ daemon์„ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, docker client์˜ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

docker-compose

Compose๋Š” multi-container Docker application๋“ค์„ ์ •์˜ํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ์ด๋‹ค. Compose file์„ ์‚ฌ์šฉํ•ด์„œ application์˜ ์„œ๋น„์Šค๋“ค์„ ํ˜•์„ฑํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋กœ configuration์— ์žˆ๋Š” ๋ชจ๋“  ์„œ๋น„์Šค๋“ค์„ ๋งŒ๋“ค๊ณ  ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. Compose๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ 3๋‹จ๊ณ„์˜ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

  1. app์˜ ํ™˜๊ฒฝ์„ Dockerfile์— ์ •์˜ํ•จ์œผ๋กœ app์„ ์–ด๋””์—๋‚˜ ๋ณต์ œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
  2. app์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ์„œ๋น„์Šค๋“ค์„ docker-compose.yml์— ์ •์˜ํ•จ์œผ๋กœ ํ•˜๋‚˜์˜ ๊ณ ๋ฆฝ๋œ ํ™˜๊ฒฝ์— ์„œ๋น„์Šค๋“ค์ด ํ•จ๊ป˜ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
  3. docker-compose up ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•จ์œผ๋กœ Compose๋Š” ๋ชจ๋“  app์„ ์‹œ์ž‘ํ•˜๊ณ  ์‹คํ–‰ํ•  ๊ฒƒ์ด๋‹ค.

dockerfile

Docker๋Š” Dockerfile๋กœ๋ถ€ํ„ฐ ๋ช…๋ น์–ด๋“ค์„ ์ฝ์–ด image๋“ค์„ ์ž๋™์ ์œผ๋กœ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ์ž‘์„ฑ.

$ mkdir {DockerFile repository}
$ cd {DockerFile repository}
# Make new DockerFile
$ vi DockerFile

# Build image by using dockerfile
$ docker build -t {image's name} .

# Run a {image's name} container -d: background
$ docker run -d -P --name {container's name} {image's name}

์ฐธ๊ณ ์ž๋ฃŒ

# docker-machine ๋‚ด ps? ํ™•์ธ
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Error Unknown machine does not exist
dev - virtualbox Stopped Unknown
# ํŠน์ • docker-machine start
$ docker-machine start dev
Starting "dev"...
(dev) Check network to re-create if needed...
(dev) Waiting for an IP...
docker-machine lsMachine "dev" was started.
Waiting for SSH to be available...
Detecting the provisioner...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
# start ์ƒํƒœ ํ™•์ธ
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Error Unknown machine does not exist
dev - virtualbox Running tcp://192.168.99.100:2376 v1.12.2
# macOS ๋‚ด์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” docker Machine์— SSH ์ ‘์†
$ docker-machine ssh dev
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
#
# Set up oracle linux 7.2 with JRE 8
# Pull base image
FROM oraclelinux:7.2
MAINTAINER JB <jungbin.kim@letsee.io>
ENV JRE_VERSION 8u151
ENV JRE_BUILD_NUM b12
ENV JRE_DOWNLOAD_HASH e758a0de34e24606bca991d704f6dcbf
RUN \
echo "Update packages" && \
yum update -y && \
yum install -y wget && \
echo "Install JRE" && \
wget --quiet --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/$JRE_VERSION-$JRE_BUILD_NUM/$JRE_DOWNLOAD_HASH/jre-$JRE_VERSION-linux-x64.rpm" && \
rpm -ivh jre-$JRE_VERSION-linux-x64.rpm && \
java -version
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment