Open5

Docker Hubのキャッチアップ

mashmash

Docker Hubって何なのか

https://hub.docker.com/

コンテナイメージを共有、保存、管理するためのリポジトリサービス。

コンテナイメージってなに?

軽量なLinux環境上にアプリケーションとその依存関係をまとめたパッケージ(アプリケーション)と考えて良さそう。

構成要素の例

・特定のランタイム環境
・アプリケーション自体のソースコードや実行可能ファイル(バイナリ)
・ライブラリ(FlutterアプリならFlutter SDKやDartのパッケージ)
・環境変数や設定ファイル
・実行コマンド

つまり、アプリをDocker Hubでコンテナ(実行環境)を構築すれば、共有した相手のローカル環境(OSとか?)に影響されずに実行できるようになるっぽい。
(コンテナが一貫して動作してくれる)

mashmash

コンテナの実行方法

Dockerの環境構築が済んでいる前提で、コンテナを共有してもらったら↓

コンテナイメージの取得のコマンド
docker pull <username>/<image-name>:<tag>

コマンドの構成:
<username> :イメージの作成者のユーザー名
<image-name> :イメージの名前
<tag> :イメージのバージョン

Docker確認してImagesに追加されていたらOK✅

mashmash

何か値を返してくれるコンテナに任意の値を返させたい場合

Docker上で操作していたけど、この場合の操作がわからなかった。
※コマンド入力で操作。

結論

エントリーポイントが返す値を上書きしてコンテナを起動するコマンド
docker run --rm --entrypoint /bin/cat <イメージ名> <欲しい値>

※後から気づいた。ちょっと遠回りしてしまった。
以下、結局やっていることは同じだけどインタラクティブモードを使う場合


調べてみると、インタラクティブモードというものを使ってエントリーポイントが指定されているコンテナを起動する方法があるらしい。
※ここから先はコマンド入力で操作した。

インタラクティブモードとは

実行コマンドに -it オプションを使用すると、コンテナ内のシェルにコマンドを直接入力できる状態になる。
「対話式で操作できる」これがいわゆるインタラクティブモード👀

※インタラクティブモードで作業を終えたら、exit コマンドでシェルを終了する!

アプローチ(というか --entrypointについて)

インタラクティブモードでコンテナを起動する際に --entrypoint オプションを追加すると、コンテナイメージに設定されているデフォルトのエントリーポイントの設定を上書きすることができる。

インタラクティブモードでエントリーポイントを上書きしてコンテナを起動するコマンド
docker run -it --entrypoint /bin/sh <イメージ名>
cat <欲しい値>
exit
mashmash

コンテナからファイルを取り出す方法(または入れ込む方法)

docker cp コマンドでコンテナとホストマシン間でファイルやディレクトリをコピーできる。

// コンテナtoホスト
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
// ホストtoコンテナ
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH