Ubuntu22.04にmodesmixer2(MM2)を導入したいのですが。ubuntu20.04でしか動作しないとのこと。
今回はDockerを利用してubuntu20.04のコンテナを導入し、MM2を動作させることにしました。
以下 導入記録です。
# 対象となるサーバの種別確認
cat /etc/issue
Ubuntu 22.04.2 LTS \n \l
# ubuntu20.04取得
docker pull ubuntu:20.04
docker run -it --name ZZZ.ubuntu ubuntu/ubuntu:20.04 -p 8787:8787 -p 20022:22 bash
# バインドマウントを使用してコンテナを起動する(ro=読み取り)
docker run -it --name Z.Docker.ubuntu -v /tmp/ds215j:/usr/share/mm2:ro -d -p 8787:8787 -p 20022:22 ubuntu:20.04 bash
# コンテナに入る
docker attach Z.Docker.ubuntu
# 必要パッケージのインストール
apt update && apt install -y iputils-ping net-tools dnsutils wget vim nmap ssh openssh-server telnet
#ModeSMixer関連
bash -c "$(wget -O - https://raw.githubusercontent.com/abcd567a/mm2/master/install-mm2-ubuntu20.sh)"
/root/modesmixer2 --inConnectId 192.168.0.100:30003:memo --location nn.nnn:nnn.nn --web 8787 --dbro /usr/share/mm2/BaseStation.sqb
# 実行させたままコンテナを抜ける
Ctrl-P Ctrl-Q
# 動作確認
Dockerfileを記述し、上記の内容を一度に実行してみた
Dockerfile
FROM ubuntu:20.04
RUN echo "Now Building..."
RUN apt update && apt install -y iputils-ping net-tools dnsutils wget vim nmap ssh openssh-server telnet
COPY ./modesmixer2 /root
COPY ./start_mm2.sh /root
EXPOSE 8787
EXPOSE 22
ENV USER="sample"
RUN echo "Completed..."
RUN echo "docker run --name Z.name -v /tmp/ds215j:/usr/share/mm2:ro -d -p 8787:8787 image:ver bash"
# 前提
# mkdir ./mm2
# modesmixer2のファイルは、Dockerfileと同じフォルダに存在して、
# Build時にイメージにコピーする
# 以下のコマンドを実行し、Dockerfileからイメージを作成。
docker image build -t z.my-modesmixer:1.0 .
# 以下のコマンドを実行し、コンテナを作成。(/tmp/ds215jと /home/USER/mm2をマウント)
docker run -it --name Z.my-mm2 -v /tmp/ds215j:/usr/share/mm2:ro -v /home/USER/mm2:/mnt -d -p 8787:8787 z.my-modesmixer:1.0 /bin/bash
# 作成したコンテナに入る
# attach
docker attach Z.my-mm2
# 以下のコマンドを実行しmodesmixer2を起動
/root/start_mm2.sh
-- OR --
/mnt/start_mm2.sh
# 実行させたままコンテナを抜ける
Ctrl-P Ctrl-Q
# コンテナ内で以下のコマンドを実行
/root/modesmixer2 --inConnectId 192.168.0.100:30003:memo --location nn.nnn:nnn.nn --web 8787 --dbro /usr/share/mm2/BaseStation.sqb
以上の操作でmodesmixer2の導入は完了です
dockerについて補足
コンテナ外でコマンド実行
# 書式 docker exec コンテナ名 command
# 実行例1
docker exec Z.my-mm2.d ls -l /root/
-rwxrwxr-x 1 root root 4714792 Mar 1 02:41 modesmixer2
-rwxrwxr-x 1 root root 1041 Mar 1 02:07 start_mm2.sh
# 実行例2
docker exec Z.my-mm2.d ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 06:57 pts/0 00:00:00 /bin/bash
root 11 1 0 06:58 pts/0 00:00:00 /bin/sh ./start_mm2.sh
root 12 11 0 06:58 pts/0 00:00:05 ./modesmixer2 --inConnectId 192.168.11.100:30003: --location 45.123.456 --web 8787 --dbro /usr/share/mm2/BaseStation.sqb
root 64 0 0 07:09 ? 00:00:00 ps -ef
# docker内でディレクトリ移動してコマンドを実行する
# docker exec some_container bash -c cd DIRECTORY_PASS && command
# 実行例3
docker exec Z.my-mm2.d bash -c cd /mnt/ && ls -l
コンテナをイメージとして保管する
# docker commit コンテナを新しいイメージとして保管
# Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# 実行例
docker commit a440f72b7ba9 test.image/modesmixer:1.0
# イメージにデータが登録されているか確認
docker run -it test.image/modesmixer:1.0 ls -l /root/
# 作成したイメージを動作させる
docker run -d -p 8787:8787 test.image/modesmixer:1.0
Dockerfileによるイメージ作成(イメージ作成コマンド実行)
docker-compose:再ビルドする場合
# docker-compose.ymlがあるフォルダで実行
docker-compose down && docker-compose build && docker-compose up -d
docker:コンテナを消す場合(一括完全削除:すべてのイメージが消えるので、実行は要注意)
docker-compose down --rmi all --volumes --remove-orphans
参考にさせていただきました、有益な情報をありがとうございます。
modexmixer2配布サイト