CheatSheet
日本語 icon日本語English iconEnglish
チートシートとはカンニングペーパーのことです。それが転じて、本来覚えることをまとめておいたものです。
要点をすぐに参照できるようにまとめてみました。

Docker

エンジニアのためのWebチートシート

Dockerとはコンテナと呼ばれるOSレベルの仮想化環境を提供するソフトウェアです。近年、コンテナ化したアプリケーションのデプロイ、スケーリング、管理を行うためのコンテナオーケストレーションシステムであるKubernetesの採用事例も増え、ますますコンテナ仮想化技術は注目されています。 Dockerコマンドをチートシートにまとめました。

コンテナのビルド(Dockerイメージの作成)

docker build

  • Dockerfileからイメージを作成します。

    docker build [options] .
      -t "app/container_name"    # name
    

Dockerイメージの実行

docker run

  • Dockerイメージを実行します。

    docker run [options] IMAGE
    

docker run -p 80:80 IMAGE

  • -pオプションにより、ビルドしたコンテナのポートをホスト側に公開することができます。例えば、下記のように-p 80:80として、localhost:80にアクセスするとコンテナの80ポートに対してアクセスすることができます。

    docker run -p 80:80 hello-world
    

Dockerデバッグ

デバッグの流れ

  • 1. Dockerイメージのビルド

    docker build -t sample .
    
  • 2. IMAGE_IDの確認

    docker images
    # REPOSITORY   TAG      IMAGE ID       CREATED              SIZE
    # sample       latest   c5e9f2437917   About a minute ago   2.35GB
    
  • 3. Dockerイメージの実行

    docker run -p 80:80 c5e9f2437917
    
  • 4. CONTAINER_IDを指定して、Dockerコンテナ内に入る

    docker ps
    # CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS                NAMES
    # 0d67c54987f8   c5e9f2437917   "bundle exec rails s…"   1 minutes ago   Up 1 minutes   0.0.0.0:80->80/tcp   nifty_haslett
    
    docker exec -it 0d67c54987f8 /bin/bash
    # bash-4.4#
    
  • 5. logを確認する

コンテナ管理

docker create

  • 新しいコンテナを作成します。

    docker create [options] IMAGE
      -a, --attach               # attach stdout/err
      -i, --interactive          # attach stdin (interactive)
      -t, --tty                  # pseudo-tty
          --name NAME            # name your image
      -p, --publish 5000:5000    # port map
          --expose 5432          # expose a port to linked containers
      -P, --publish-all          # publish all ports
          --link container:alias # linking
      -v, --volume `pwd`:/app    # mount (absolute paths needed)
      -e, --env NAME=hello       # env vars
    
    $ docker create --name app_redis_1 \
      --expose 6379 \
      redis:3.0.2
    

docker exec

  • 指定したコンテナの中でプロセスを実行します。

    docker exec [options] CONTAINER COMMAND
      -d, --detach        # run in background
      -i, --interactive   # stdin
      -t, --tty           # interactive
    
    $ docker exec app_web_1 tail logs/development.log
    $ docker exec -t -i app_web_1 rails c
    

docker ps

  • Dockerプロセスの一覧を確認します。

    $ docker ps
    $ docker ps -a
    $ docker kill $ID
    

docker start/stop

  • 作成したDockerイメージを起動・停止することができます。

    docker start [options] CONTAINER
      -a, --attach        # attach stdout/err
      -i, --interactive   # attach stdin
    
    docker stop [options] CONTAINER
    

イメージ

docker images

  • Dockerイメージの一覧を表示します。

    $ docker images
      REPOSITORY   TAG        ID
      ubuntu       12.10      b750fe78269d
      me/myapp     latest     7b2431a8d968
    $ docker images -a   # also show intermediate
    

docker rmi

  • Dockerイメージを削除します。

    docker rmi b750fe78269d