Open8

Dockerについての学習備忘録①

でんちゅーでんちゅー

Dockerの概要

  • 複数人開発の際に実行環境を共有するための仕組み

GitとDocker

  • ソースコードの共有: Git
    • Github
    • Gitlab
    • Bitbucket
  • 実行環境の共有: Docker
    • DockerHub
でんちゅーでんちゅー

Dockerの構造

低レイヤーから

  1. ハードウェア/インフラストラクチャ
  2. ホストOS
  3. Docker Engine
  4. コンテナ(仮想環境)
でんちゅーでんちゅー

イメージとコンテナ

  • Image: コンテナ(アプリケーションの実行環境)を起動するための設定ファイル群
  • Container: Imageを基に起動された実行環境

Tag

  • Tag: Imageのversionのこと
    • image:latest
    • image:1.10-sample
    • tag名を何も指定しないと自動的にlatestタグが使用される
でんちゅーでんちゅー

Imageの構造

  • Image: レイヤー構造
  • 1つのミドルウェア=1レイヤー
  • Image自体は編集不可
  • Imageから生成されたContainerレイヤーは編集可能
  • Containerをcommitするとその実行環境がImageとして生成される
でんちゅーでんちゅー

Image関連コマンド

  • ローカルマシンに取得済みのImage一覧取得
docker images
  • Docker HubからのImage取得
docker pull <イメージ名>
  • Dockerfileからのイメージ作成
Dockerfile
FROM <イメージ名>:<タグ名>  # image作成のベースとなるimage
RUN <パッケージ等インストールコマンド>  # ミドルウェアのインストール(imageのレイヤーを重ねる)
CMD <コマンド指定>  # コンテナ作成後に実行するコマンド
docker build -t  # ビルドしたイメージに付けるイメージ名
# cacheを無効にしてbuildする場合
docker build -no-cache -t docker-whale
でんちゅーでんちゅー

コンテナ関連コマンド

コンテナ作成&起動関連

  • Imageからコンテナの作成
docker create --name <コンテナに付ける名前> <イメージ名>
  • コンテナ起動
docker start <コンテナ名>
  • DockerHubからイメージ取得&コンテナ作成・起動(以下3つを同時に実行)
    • docker pull: DockerHubからイメージを取得
    • docker create: 取得したイメージからコンテナを作成
    • docker start: 作成したコンテナを起動
docker run <イメージ名>

コンテナの操作関連

  • 実行中コンテナ一覧を取得
docker ps
  • 現在存在しているコンテナ一覧を取得
docker ps -a
  • コンテナの詳細を確認
docker inspect <コンテナ名>
  • コンテナの作成
    • -i: コンテナの標準入力を取得&双方向接続するオプション
    • -t: コンテナ内にTTYを割り当てるオプション
docker create -name <コンテナに付ける名前> -it <イメージ名> /bin/bash
  • コンテナの起動
docker start <コンテナ名>
  • コンテナの一時停止
docker pause <コンテナ名>
  • コンテナの再開
docker unpause <コンテナ名>
  • コンテナの再起動
docker restart <コンテナ名>
  • コンテナの停止
docker stop <コンテナ名>
  • コンテナの削除
docker rm <コンテナ名>
  • コンテナの強制削除
docker rm -f <コンテナ名>
  • 起動中のコンテナのシェルへの接続
    • ataach
docker attach <起動中コンテナ名>
  • exec
docker exec -it <起動中のコンテナ名> /bin/bash
  • コンテナからイメージを作成
docker commit <コンテナ名> <image名>:<タグ名>
  • イメージの変更履歴の確認
docker history <イメージ名>
でんちゅーでんちゅー

DockerHub関連コマンド

  • DockerHubでのimage共有

    1. Docker Hub上でリポジトリを作成
    2. ローカルでimageを作成
    3. ローカルのCLI上で以下のコマンドを使ってDockerHubへログイン(GUIはなさそう...)
  • ログイン

docker login
  • push対象のimageにtag付け
docker tag <push対象image名> <DockerHub-ID>/<新規image名>:<タグ名>
  • ローカルimageをリモートリポジトリにpush
docker push <DockerHub-ID>/<image名>:<タグ名>