Docker-2

前回に続きDocker。

今週半ばから現場で実際にDockerでの環境構築がスタートしたのでその記録を。

※ちなみに、linux環境設定についてほぼ素人なのでそんなんも知らんのんかい!

っていうのがあるかもしれませんがご了承ください笑

 

要件としては以下。

  • Javaの開発を行う。
  • 開発はeclipseで行う。
  • できればソースとかもDocker内で管理。
  • Macでやる。

特にコンテナのOSについては指定がなかったので、

とりあえず開発環境のサーバとOS合わせとくか的な感じでCentOSの5系をチョイス。 

Dockerではイメージと呼ばれるものからコンテナを生成して色々やります。

イメージはDockerHubと呼ばれるGitHub的なもので管理・公開されており、

Dockerが公式で公開しているものと、有志の人が自作したイメージがあります。

(searchコマンドで検索できます。)

今回は公式のものを以下コマンドでローカルに取得。

($はターミナル、#〜は起動したlinux内のコマンド)

ちなみに:のあとはタグを指定してます(バージョン的な感じ)。

$docker pull centos:5

上記コマンドでイメージをローカルに取得。

続いて以下コマンドで起動。

$docker run -it centos:5 /bin/bash

-iでターミナルからの入力をコンテナへ、

-tでコンテナの出力をターミナルへ出力することをオプションで指定。

起動後にbashが起動するように末尾に指定。

 

起動後、viやらwgetやら最初は入ってないみたいなので、

必要なものをyumでインストールしました。

ちなみに、ぽんぽんインストール出来ましたが特に外部ネットワークとの接続とか

設定はしてないです。

 

で、こまめに保存しながら進めました。

基本的にDockerはコンテナの起動を終了すると、

内部で作業した内容は全て消えます。

イメージの状態を保存するには

#exit or Ctrl+p

でコンテナを抜け、

$docker ps -a

でコンテナの起動履歴を確認します。

起動IDも表示されるので、それを確認し以下commitコマンドで保存。

起動ID 任意のイメージ名 を指定。

$sudo docker commit e69534fd0a04 ikeda/centos5

で以降はこれをこまめに繰り返します。

commit時に設定した名前で再び起動。

$docker run -i -t ikeda/centos5 /bin/bash

jdkwgetで取得。

#yum list | grep jdk

で確認するとopenjdkしか出てこず、openjdkでeclipseが動くか不安だったので

公式のものを取得。

古いバージョンのものはダウンロード時に認証が

あるため、クッキーを偽装して取得。

#wget --no-check-certificate --no-cookies - --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin

落としたやつを/usr/locale/srcに移動、ファイル名をリネームし

環境変数を設定しjavaが動くのを確認。

 

ここで、eclipseを動かすためにはGUI環境が必要なことに気づき

色々ググっているとlinux環境では割とポピュラーな

X Window Systemというのがあるらしく、中でもgnomeというのがいい感じらしので

入れてみることに。

#yum -y groupinstall "X Winodw System"
#yum -y groupinstall "GNOME Desktop Environment"
#yum -y groupinstall "Japanese Support"

最後のやつは日本語入力用のパッケージらしいです。

ちなみに、ーyはダウンロード確認の対話を省略するオプションらしい。

で、途中でNo more mirrors to try的なエラーが出るので

yum clean all して再トライするといけました。

 

で、必要なものが揃ったので下記コマンドでGUIを実行。

#startx

う、動かない…

rootで実行すると、tty0がないと怒られる。確認すると確かにない…

で、ルートユーザー以外で実行しても同様のエラーが…

調べるとlinuxにはランレベルと呼ばれるものがあり、

GUIで起動する場合には5に設定する必要があるそうな。

で設定ファイルをいじりました。

設定いじったら再起動が必要なのでrebootしてみると

さ、再起動できない…

Dokcerで動かしてるコンテナは基本的に再起動はできないらしい…

んで、さらにググるとXWinods系やらgnomeはライセンスの関係上

Docker上では動作しないらしい…

目の前が真っ暗になった…

 

で、リーダーの人に相談したら別にcentosじゃなくてもいいっす的な言われたので

linux系でデスクトップがあるといえばubuntuや!と思いubuntu

再トライをしてみることに。

 

続く笑