Open8
Dockerについての学習備忘録①
Dockerの概要
- 複数人開発の際に実行環境を共有するための仕組み
GitとDocker
- ソースコードの共有: Git
- Github
- Gitlab
- Bitbucket
- 実行環境の共有: Docker
- DockerHub
Dockerの構造
低レイヤーから
- ハードウェア/インフラストラクチャ
- ホストOS
- Docker Engine
- コンテナ(仮想環境)
イメージとコンテナ
- 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共有
- Docker Hub上でリポジトリを作成
- ローカルでimageを作成
- ローカルのCLI上で以下のコマンドを使ってDockerHubへログイン(GUIはなさそう...)
-
ログイン
docker login
- push対象のimageにtag付け
docker tag <push対象image名> <DockerHub-ID>/<新規image名>:<タグ名>
- ローカルimageをリモートリポジトリにpush
docker push <DockerHub-ID>/<image名>:<タグ名>
参考にした記事