Docker Hubのキャッチアップ
Docker Hubって何なのか
コンテナイメージを共有、保存、管理するためのリポジトリサービス。
コンテナイメージってなに?
軽量なLinux環境上にアプリケーションとその依存関係をまとめたパッケージ(アプリケーション)と考えて良さそう。
構成要素の例
・特定のランタイム環境
・アプリケーション自体のソースコードや実行可能ファイル(バイナリ)
・ライブラリ(FlutterアプリならFlutter SDKやDartのパッケージ)
・環境変数や設定ファイル
・実行コマンド
つまり、アプリをDocker Hubでコンテナ(実行環境)を構築すれば、共有した相手のローカル環境(OSとか?)に影響されずに実行できるようになるっぽい。
(コンテナが一貫して動作してくれる)
コンテナの実行方法
Dockerの環境構築が済んでいる前提で、コンテナを共有してもらったら↓
docker pull <username>/<image-name>:<tag>
コマンドの構成:
<username> :イメージの作成者のユーザー名
<image-name> :イメージの名前
<tag> :イメージのバージョン
Docker確認してImagesに追加されていたらOK✅
何か値を返してくれるコンテナに任意の値を返させたい場合
Docker上で操作していたけど、この場合の操作がわからなかった。
※コマンド入力で操作。
結論
docker run --rm --entrypoint /bin/cat <イメージ名> <欲しい値>
※後から気づいた。ちょっと遠回りしてしまった。
以下、結局やっていることは同じだけどインタラクティブモードを使う場合
調べてみると、インタラクティブモードというものを使ってエントリーポイントが指定されているコンテナを起動する方法があるらしい。
※ここから先はコマンド入力で操作した。
インタラクティブモードとは
実行コマンドに -it オプションを使用すると、コンテナ内のシェルにコマンドを直接入力できる状態になる。
「対話式で操作できる」これがいわゆるインタラクティブモード👀
※インタラクティブモードで作業を終えたら、exit
コマンドでシェルを終了する!
アプローチ(というか --entrypointについて)
インタラクティブモードでコンテナを起動する際に --entrypoint
オプションを追加すると、コンテナイメージに設定されているデフォルトのエントリーポイントの設定を上書きすることができる。
docker run -it --entrypoint /bin/sh <イメージ名>
cat <欲しい値>
exit
コンテナからファイルを取り出す方法(または入れ込む方法)
docker cp
コマンドでコンテナとホストマシン間でファイルやディレクトリをコピーできる。
// コンテナtoホスト
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
// ホストtoコンテナ
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
distrolessイメージってなに?