公式サイトに記載されているように、起動時のコマンドが長いので、エイリアス設定しておくと起動が楽になります。
この記事では、そのエイリアス設定コマンドが具体的に何を行っているのか、各オプションの意味を備忘録としてメモしておきます。
エイリアス設定コマンド
公式サイトに記載されているエイリアス設定コマンドは以下です(シェルがzshの場合)。
echo $'alias docker-om=\'docker run -it --rm \
-v "$HOME:$HOME" \
-e "HOME=$HOME" \
-w "$PWD" \
-e "DISPLAY=`ifconfig | grep -o "inet [0-9.]*" | grep -Eo "[0-9.]{7,}" | grep -Fv 127.0.0.1 | head -1`:0" \
--user $UID \
openmodelica/openmodelica:v1.24.4-gui\'' >> "$HOME/.zshrc"この一行のコマンドは、大きく分けて「エイリアスを定義する部分」と「その定義をシェルの設定ファイルに書き込む部分」から構成されています。
エイリアス定義をシェルの設定ファイルに記載
echo $'…' >> "$HOME/.zshrc"
- シングルクォートで囲まれた文字列(エイリアスの定義)を、~/.zshrc に追記しています。
- $ ‘…’: シングルクォート ‘…’ の前に $ を付けると、シングルクォート内のエスケープ文字 (\) が有効になります。
上記コマンド内では’をただの文字として認識させるために、\’が使用されています。 - $HOME: ホームディレクトリを表す環境変数です。
- .zshrc: zshの設定ファイルです。ターミナル(zsh)を起動するたびにこのファイルが読み込まれ、設定が適用されます。
エイリアス定義部分
次にエイリアスの定義部分を見ていきます。
alias docker-om='...':- docker-omというエイリアスを定義しています。
- エイリアスに指定された長い docker run コマンドを、短いコマンド (docker-om) で呼び出せるようにします。
docker run -it --rm- -it: 対話型(interactive)かつTTYを有効にするフラグ。コンテナのシェル操作や標準入力が可能になります。
- –rm: コンテナを停止すると自動的に削除します。
-v "$HOME:$HOME"- ホスト側の $HOME ディレクトリをコンテナ内の $HOMEディレクトリ にマウントします。
- これにより、ホストのホームディレクトリ内のファイルをコンテナからも直接参照・編集できるようになります。
-e "HOME=$HOME"- コンテナ内の HOME 環境変数を、ホストの$HOMEの値(ホームディレクトリのパス)に設定します。
- -v でマウントしたディレクトリと合わせて、コンテナ内のアプリケーションがユーザーのホームディレクトリを正しく認識するために役立ちます。
-w "$PWD"- コンテナの作業ディレクトリ(working directory) をホストのカレントディレクトリ($PWD)に合わせます。
- これにより、コンテナ起動時のカレントディレクトリがコンテナ起動時の作業ディレクトリとして扱われます。
-e "DISPLAY=...:0"- DISPLAY 環境変数を設定し、コンテナからXサーバ(GUI出力先)に接続するためのものです。
- `ifconfig | grep -o “inet [0-9.]*” | grep -Eo “[0-9.]{7,}” | grep -Fv 127.0.0.1 | head -1`
でホストマシンのネットワークインターフェース情報(ifconfigの出力)から「ループバック以外の最初のIPv4アドレス」を抽出しています。 - :0 : ディスプレイ番号を指定します。
- これにより、Dockerコンテナ内のXアプリケーション(OpenModelicaのGUIなど)がホストのXサーバに画面出力を送れます。
--user $UID- コンテナ内のユーザーIDをホストのユーザーIDと同じにします
- これを指定することで、コンテナ内で作成されるファイルの所有者が、Mac上のあなたと同じユーザーになります。指定しない場合、コンテナ内ではrootユーザー(ID=0)でプロセスが実行され、コンテナ内で作成したファイルがMac側で編集・削除しにくくなる(パーミッションの問題)ことがあります。
openmodelica/openmodelica:v1.24.4-gui- 起動するDockerイメージの名前およびタグです。
- OpenModelicaのGUI対応版(v1.24.4)が含まれた公式イメージになります。
コメント