Android 携帯で ALPINE-TERM を使用して docker をインストール#
Alpine Term は、Termuxに基づいた Android アプリで、QEMU 仮想マシンとAlpine Linuxを統合しており、Android 携帯上で Root なしで完全な Linux 環境を実行でき、Docker などのコンテナ技術を直接使用できます。
環境要件#
携帯のシステム環境は以下を満たす必要があります:
- AArch64 アーキテクチャ(一般的にはこれです)
- Android 7.0 以上
- 内部ストレージに少なくとも 500MB の空き容量。
- ネットワークに接続
Alpine Term のインストール#
(1)GitHub から ALPINE-TERM APK(606MB)をダウンロードします。
ダウンロードリンク:https://github.com/FakeRajbhx/alpine-term/releases/download/New/alpine-term-v16.0-release.apk
(2)携帯にインストールが完了したら、アプリに入り、システムの読み込みが完了するのを待ちます。
(3)デフォルトユーザー alpine とパスワード alpine を入力して、システムにログインします。
(4)root アカウントに切り替えます。root ユーザーのデフォルトパスワードは alpine です。passwd
を入力して変更できます。
# rootコマンドラインに切り替え
sudo -s
(4)sshd サービスの設定ファイルを変更し、SSH リモート接続を有効にします。
vi /etc/ssh/sshd_config
# rootユーザーの接続を許可
PermitRootLogin yes
# パスワードログインを有効にする
PasswordAuthentication yes
# sshdサービスを再起動
service sshd restart
(5)ALPINE-TERM のターミナル画面の上部で、右にスワイプしてターミナルメニューを表示し、[1] QEMU
を選択し、以下のコマンドを入力して Enter を押し、ssh リモート接続ポートを開きます。
# 22ポートを携帯の8034ポートにマッピング
hostfwd_add tcp::8034-:22
ALPINE-TERM を起動するたびに、このコマンドを入力する必要があります。
(6)ソフトウェアリポジトリのソースを変更します。
# 既存のソフトウェアリポジトリのソースを無効にする
mv /etc/apk/repositories /etc/apk/repositories.bak
# 清華源を使用
echo "
https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.13/main
https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.13/community
" > /etc/apk/repositories
(7)DNS を変更します。
sed -i 's/nameserver 94.16.114.254/nameserver 114.114.114.114/g' /etc/resolv.conf
sed -i 's/nameserver 185.120.22.15/nameserver 223.5.5.5/g' /etc/resolv.conf
docker のインストール#
(1)パッケージを更新します。
apk update && apk upgrade --force-broken-world
(2)システムには docker が付属していますが、docker compose はありません。
# 自動起動を設定
rc-update add docker boot
# dockerを起動
service docker start
# バージョンを確認
docker version
[オプション] ソフトウェアリポジトリのソースを変更し、システムに付属の docker をアンインストールし、新しい docker と docker compose をインストールします。
echo "
https://mirrors.tuna.tsinghua.edu.cn/alpine/latest-stable/main
https://mirrors.tuna.tsinghua.edu.cn/alpine/latest-stable/community
" > /etc/apk/repositories
# 更新
apk update
# dockerをアンインストール
apk del docker --force-broken-world
# 新しいdocker、docker composeをインストール
apk add docker docker-compose docker-cli-compose --force-broken-world
(3)国内のミラーソースを設定し、docker のデフォルトストレージディレクトリを変更します。
echo '{
"data-root": "/data/dockerData",
"registry-mirrors": ["https://docker.1ms.run"]
}' > /etc/docker/daemon.json
(4)docker を起動し、自動起動を設定します。
# dockerを再起動
service docker restart
# 自動起動を設定
rc-update add docker boot
# バージョンを確認
docker version
docker compose version
アクセスのテスト#
(1)nginx コンテナを作成します。
# nginxイメージをプルしてコンテナを作成し、ホストの8080ポートをマッピング
docker run -itd --name=nginx -p 8080:80 nginx
# コンテナの実行状況を確認
docker ps
コンテナ起動時に類似のエラーが発生した場合は、alpine ホストを再起動してください。
docker: Error response from daemon: failed to create endpoint nginx on network bridge: failed to add the host (veth3f2f206) <=> sandbox (veth9a8264a) pair interfaces: operation not supported.
(2)QEMU で対応するポートを設定します。
# ホストの8080ポートを携帯の8081ポートにマッピング
hostfwd_add tcp::8081-:8080
SSH のマッピングと同様に、コンテナポートをマッピングする場合も、QEMU で実行する必要があります:
hostfwd_add tcp:: 携帯ポート -: ホストポート
(3)ブラウザに ip + ポートを入力してアクセスします。