無料枠のEC2の使用例(2つと1つのボリュームでDOCKERを使う)

Post date: 2017/11/01 10:53:51

私は、ec2にubuntuを入れたanagix1と呼んでいるインスタンス(8G)とamzn linuxを入れたanagix3というインスタンス(10G)のほかに、workという10Gのボリュームを作り、通常はworkをanagix1にアタッチし、anagix3からNFSで/mnt/workにマウントしてます。/mnt/workの内容は以下のようになってます:

anagix_tools --- /usr/local/anagix_toolsがシンボリックリンク

docker --- anagix1でdockerするときの /var/lib/docker

opt

chefdk --- ChefのDining Kichenです

vivaldi --- 無視してください。1Gメモリでは重すぎる。

wine-stable --- ubuntuでソースから入れた???

ubuntu

chef-repo --- 使うときは、/home/ubuntu/chef-repoから

work ---これも使うときは、/home/ubuntu/work

そしてこれが大事なのですが、rootでdockerをインストールした後、

docker run -it -v /mnt/work:/mnt/work -v /tmp:/tmp -e DISPLAY -e QT_X11_NO_MITSHM=1 -v /home/ubuntu/.Xauthority:/root/.Xauthority --net=host ubuntu:latest /bin/bash

を実行し、dockerコンテナの中で、/mnt/work/setupという以下のスクリプトを

実行してます。QT_X11_NO_MITSHM=1 を指定しないと、qt4のアプリを動かしたとき、以下のエラーが出て、アプリ画面が正しく表示されません。

X Error: BadAccess (attempt to access private resource denied) 10

# to setup

apt-get update

apt-get install -y xauth

rmdir /opt

ln -s /mnt/work/opt /opt

ln -s /mnt/work/anagix_tools /usr/local/anagix_tools

useradd --uid 1000 -m ubuntu

useradd --uid 1001 -m anagix

# caution: root should set passwords later

ln -s /mnt/work/ubuntu/chef-repo /home/ubuntu/chef-repo

ln -s /mnt/work/ubuntu/work /home/ubuntu/work

# so that ubuntu can use DISPLAY

cp /root/.Xauthority /home/ubuntu/.Xauthority

chown ubuntu /home/ubuntu/.Xauthority

#

apt-get install -y x11-apps

usermod -G sudo anagix

usermod -G sudo ubuntu

apt-get install -y emacs

apt-get install -y libglu1-mesa # for glade

apt-get install -y build-essential

apt-get install -y git

apt-get install -y sudo

su -l ubuntu でubuntuになると XのDISPLAY変数と.Xauthorityが引き継がれているので、コンテナから普通にXを使えます。

ただし、qt4アプリの場合、-lしては何故かダメで、suだけにしてください。(←これハマります。)

EC2のインスタンスを作りなおすよりは、dockerコンテナを作り、スクリプトを

実行するだけですむので、DOCKERを使う方法は有効かと思います。