前回紹介しました、Androidスマホのサーバー化ですが、
カメラより画像が取得できるため、画像処理とか出来たら面白そうだな!?と思い立ち、OpenCVのインストールを試みております。
、、、が、思った以上に難しい!!そして、ビルドに時間がかかる!!
かれこれ3時間待ってますがやっと50%を超えたところです。。。
で、待ち時間がちょっと暇だったのでVirtualBox上にdockerを構築してみました!!
初めての構築だったので調べながら実施したのですが、備忘録として手順を残したいと思います!!
【目次】
参考
※下記手順ですが、下記を参考に記載しております。
qiita.com
http://sagantaf.hatenablog.com/entry/2019/06/05/235649sagantaf.hatenablog.com
www.scriptlife.jp
qiita.com
①dockerインストール
まずdocker構築のために必要となるソフトをあらかじめインストール。
sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ software-properties-common
次に、docker公式の公開鍵を取得。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
そして、aptコマンド用のリポジトリを設定しますが、dockerではstable、edge、testが公開されています。
今回はstableに設定かつ64bit環境を用いているため、下記を実行。
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
では、dockerをインストールするためにこちらを実行。
sudo apt-get install -y docker-ce
2013年にdockerが誕生したが、2017年にCE(コミュニティエディション)とEE(エンタープライズエディション)が提供されるようになりました。
CE:無償、EE:有償のイメージで問題なさそうです。
今回は無償版で確認するため、CEを用いました。
DockerとDocker-CEの違いについて - Qiita
問題なくインストールできたか確認するために、
docker version
を実行。
バージョンが表示されれば、インストール完了です。
②docker環境構築
コンテナとイメージを作成するためにこちらを実行する。
sudo docker run -d -it --name=コンテナ名 イメージ名
使用できるイメージ名を確認するにはこちらを実行。
apt-cache madison docker-ce
コンテナにログインするにはこちらを実行。
sudo docker exec -it docker名 /bin/bash
③ネットワーク環境構築
まず、コンテナのプロセスIDを確認。
docker inspect コンテナ名 --format '{{.State.Pid}}'
ipコマンドの支配下である、/var/run/netnsにリンクさせる。
sudo mkdir -p /var/run/netns sudo ln -s /proc/15329/ns/net /var/run/netns/test1-ns
コンテナ内部のネットワークを確認し、IPアドレスが与えられていることをチェック。
sudo ip netns exec test1-ns ip link show
次にdockerのポートフォワーディングを行います。
まず、IPアドレスの確認。
docker inspect --format '{{ .NetworkSettings.IPAddress }}' コンテナ名
続いてNAT + FOWARD設定です。
これにより、外部からコンテナにアクセスが可能になります。
iptables -t nat -A DOCKER ! -i docker0 -p tcp -m tcp --dport ポート -j DNAT --to-destination IPアドレス:ポート iptables -A FORWARD -d IPアドレス ! -i docker0 -o docker0 -p tcp -m tcp --dport ポート -j ACCEPT
またdocker run実行時にこちらのように-pオプションを指定することでポートフォワーディング設定が可能です。
sudo docker run -d --name コンテナ名 -p 12345:8888 /bin/bash
④ファイル共有
コンテナ⇒ホスト
sudo docker ps ←コンテナのプロセスID確認 sudo docker cp コンテナID:/etc/my.cnf my.cnf
ホスト⇒コンテナ
sudo docker ps ←コンテナのプロセスID確認 sudo docker cp my.cnf コンテナID:/etc/my.cnf
最後に
docker初めて使ってみたけど、難しいな。。。
保守性とか考えると使えるの便利そうなので、毛嫌いせず積極的に使っていきたいと思います!!