Docker チートシート
By on Oct 14, 2019
ホスト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を使用する