iPadでコンテナ開発環境構築

無料でiPadでコンテナ開発環境を構築する。方法を2つ以下に示す。
メモ程度の記事なので、軽く参考にすること

## 方法① GitHub Codespacesを利用

### 実施手順
①WebブラウザでGitHubアカウントを作成/ログイン
②リポジトリを作成
※webブラウザから作成すること。iPadのGitHubアプリからリポジトリの作成はできない
③GitHubリポジトリにDockerfileを用意する

```Dockerfile
# ベースイメージとしてUbuntu 20.04を指定
FROM ubuntu:20.04

# タイムゾーン設定と非対話モードの環境変数を設定
ENV TZ=Etc/UTC
ENV DEBIAN_FRONTEND=noninteractive

# パッケージリストの更新と基本ツールのインストール
RUN apt-get update && apt-get install -y \
    tzdata \
    curl \
    wget \
    vim \
    sudo \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

# 作業ディレクトリの設定
WORKDIR /workspace
```


④Codespacesを開始
→リポジトリ画面で「Code」ボタンをクリック「Codespaces」を選択→「Create codespace main」を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3973448/02e49c23-a495-6e0d-1778-744e88f13d05.png)

⑤Codespacesでコンテナビルドと起動

```
#ビルド
docker build -t ubuntu20.04-custom .
#起動
docker run -it ubuntu20.04-custom
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3973448/a7e530be-c6a1-75a9-aa02-703d47cb136b.png)


⑥iPadのWebブラウザ（SafariやGoogle Chrome）からアクセス可能。必要に応じてGitHubの「GitHub App」をインストール。



## 方法②AWS+EC2のクラウドベースの環境を構築しiPadのアプリからSSH接続する

### 用語説明
・AWS（Amazon Web Services）：インターネット経由でサーバーやストレージ、ネットワークなどを提供するクラウドサービス
・EC2（Elastic Compute Cloud）：仮想サーバーを提供するサービス。自分専用のリモートサーバーを作成してさまざまな用途で利用可能
・インスタンス：クラウド上で動作する仮想サーバーのこと

### 実施手順
①AWS公式サイト（https://aws.amazon.com/jp/ ）にアクセスして、無料アカウントを作成する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3973448/59d8fb29-d042-59d3-76f7-ef61598ebcda.png)

②AWSコンソールでEC2インスタンスを作成。
（※EC2のt2.microインスタンス（仮想サーバー）は12ヶ月間無料で利用可能）

・以下のコンソール画面で、メイン画面の「最近アクセスしたサービス」で「EC2」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3973448/9377d431-e13c-4b54-2dc7-23e0212ab316.png)

・インスタンスを起動する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3973448/f439b34f-fb2f-2fe8-4916-b174dc2b75f2.png)

・OSを選択する。コンテナ構築したいので以下の3つから選ぶ
・Amazon Linux 2：AWS公式の軽量OS。AWSサービスとの親和性が高く、サポートも充実。
・Ubuntu：世界的に人気が高く、ドキュメントやサポートが豊富。
・Red Hat系：Podmanの開発元であるRed Hatと互換性があるOS。

・インスタンスタイプを選択する。ここでは、「t2.micro」を選択する（無料利用枠に該当）

・セキュリティ設定（SSHキーの設定）を設定する。「キーペア作成」を選択する
※SSHキー（.pemファイル）を新規作成してダウンロードする。このキーはiPadやPCからサーバーに接続するために必要

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3973448/a2c9a953-3e86-3cb8-143a-30a0b136d50a.png)


・インスタンスを起動する。すべての設定を確認し、「起動」ボタンをクリックする。以上でEC2インスタンスの準備完了
※ローカルのpowershellからログインで接続確認できる
コマンドは、インスタンスに接続＞SSHクライアントから確認できる


※トラブルシューティング
以下のログが出た場合の確認方法は、この記事参考に実施すること（https://qiita.com/ken992/items/101e9de458eb173971f5）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3973448/2d5603d1-8ef8-e3ba-c3bc-bb5a17c0ed27.png)

補足：IMAロール変更＞アクセス管理＞ポリシー＞でポリシーを作成する(ポリシー内容は参考サイトを参照すること)。
そのあと、IMAロールを新規作成する。IMAロールをEC2インスタンスにアタッチする(インスタンス作成時の高度な詳細で対応可能)

重要：IMAがAmazon Linuxの場合、SSHに成功した。RedHatOSを使用するとリポジトリにec2-instance-connectがないので失敗する。

ec2-instance-connectを成功させるためには以下のコマンドをEC2インスタンス上で実施する必要がある

```
sudo yum update
sudo yum install ec2-instance-connect
```
成功するとEC2インスタンス上に以下の画面が表示される

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3973448/af18d706-af95-6979-d530-28cfa034966b.png)


③SSHアプリ（例: Termius）をiPadにインストールしてリモート接続する

・App Storeから「Termius」アプリをインストールする（無料で使用可能）
・Termius->Keychain->Add keyでキーをインポートする
（今回はGoogleドライブからインポート）
・Hostで新しいホストを追加する

以下の情報を入力：

```
Alias（エイリアス）: 接続の名前（例: My EC2 Server）
Address（アドレス）: EC2のパブリックDNSまたはIP（例: ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com）。
Port（ポート）: 22（デフォルトのSSHポート）
Username（ユーザー名）: ec2-user
Password（パスワード）: 空白
Private Key（秘密鍵）: 先ほどインポートしたKeyを選択
```

設定が完了したら自動接続される。正常に接続できると、リモートサーバーのターミナルが表示される。

以上