post-image

Docker チートシート


ホストOSを何かと汚したくない為、開発環境をDockerで作成することとした。

最近は、何かと忘れやすいので、チートシートを作成しておく。

概要

コンテナ型の良いところ

・仮想マシンでは、ホストマシン上でハイパーバイザを利用し、ゲストOS〜ミドルウェアなどをインストールした後で、アプリを開発する。

・コンテナでは、ミドルウェアまでを用意してくれてあるため、環境構築の手間が省ける。

・コンテナでは、ホストマシンのカーネルを利用し、プロセスやユーザなどを隔離することで、あたかも別のマシンが動いているかのように動かセル。

・軽量で高速に起動、停止などが可能。

コンテナ型

操作

  • docker index … Docker Image リポジトリ置き場
階層 くだり のぼり
docker image docker pull(ダウンロード) docker push(imageをindexにアップロード)
docker container docker run(実行) docker commit(image作成)

頻用コマンド

Image

docker pull

Docker Index から Docker Image をダウンロードする

# image 一覧
$ docker images

# image 検索
$ docker search <KEY_WORD> | more
$ docker search centos | more

# ダウンロード
$ docker pull <IMAGE_NAME>
$ docker pull centos

詳細を見る
$ docker inspect <IMAGE_NAME>:latest
$ docker inspect centos:latest

docker rmi

Docker imageを削除する

$ docker rmi <IMAGE_NAME>:latest
$ docker rmi centos:latest

Container

docker run

# コンテナを実行する
$ docker run centos echo "hello world"

# 実行中のコンテナプロセスを見る
$ docker ps

# 実行済のコンテナを見る
$ docker ps -a -n=5

# バックグラウンド実行
$ docker run -d centos [Command]
$ docker run -d centos free -s 3
# -d = background
# 実行状態を確認する
$ docker attach --sig-proxy=false <CONTAINER_ID>
# --sig-proxy=false = Ctrl+Cで抜けるため

# コンテナを終了する
$ docker kill <CONTAINER_ID>

console

#コンテナの中に入る
$ docker run -i -t centos /bin/bash
#-i interactive
#-t terminal

docker rm

# docker コンテナを削除する
sudo docker rm <CONTAINER_ID>

docker commit

$ docker commit <CONTAINER_ID> shoko<user_name>/<container_name>
$ docker images

Build

Dockerfile

FROM centos
MAINTAINER Shoko KOBAYASHI <shoko@mitose.jp>

# RUN: buildするときに実行される
RUN echo "now building..."
# CMD: runするときに実行される
CMD ["echo", "now running..."]

docker build

$ docker build -t shokokb<user_name>/echo<image_name> .
# イメージが作られる
$ docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
shokokb/hello                  latest              76f6af6c678d        12 seconds ago      220MB

HTTPD

Dockerfile

FROM centos
MAINTAINER Shoko KOBAYASHI <shoko@mitose.jp>
RUN yum install -y  httpd
ADD ./index.html /var/www/html
EXPOSE 80

CMD ["/usr/sbin/httpd", "-DFOREGROUND"]

Dockerfile のとなりにindex.htmlを配置する

$ docker build -t <USERNAME>/<IMAGE_NAME> .
$ docker run -p 8080:80 -d(background) <USERNAME>/<IMAGE_NAME>
# 8080に80をマップ

doker push

$ docker login
$ docker push shokokb/hello

docker-compose

起動

# foregroundで起動
docker-compose up

# backgroundで起動
docker-compose up -d

停止

# foregroundで起動していた場合
## Ctr + C

# backgroundで起動していた場合
docker-compose stop

再起動

# backgroundで起動していた場合
docker-compose restart

docker-composeを反映

# foregroundで起動
docker-compose up

# backgroundで起動
docker-compose up -d

Dockerfile or ビルド処理の変更を反映

# foregroundで起動
docker-compose up --build

# backgroundで起動
docker-compose up -d --build

アプリケーションログ表示

# 最新5行からtailする
docker-compose logs -f --tail="5"

# 最新5行からタイムスタンプ付きでtailする
docker-compose logs -f --tail="5" -t

停止・削除

# 停止&削除(コンテナ・ネットワーク)
docker-compose down

# 停止&削除(コンテナ・ネットワーク・イメージ)
docker-compose down --rmi all

# 停止&削除(コンテナ・ネットワーク・ボリューム)
docker-compose down -v

GUIで操作する

  • Kitematicsを使用する

Back to blog

あなたのひらめきをかたちに

どうやって作るのか想像がつかなければ、一緒に作り上げましょう.

お話をうかがさせてください