DockerのUbuntu14.10の日本語化環境イメージを作成(Ubuntu)

Dockerって最近よく聞いたりするのですが、仮想マシン(KVM、VirtualBox)とどう違うのか、イメージ?コンテナ?と妄想だけでは整理できなかったので実際に使ってみようかと思います。

で、使ってみて何となく整理できてきたので、簡単に言うと(まだ簡単にしか言えませんけどね)Dockerfileに環境構築の手順のようなものを書いて、それを元にdockerでビルドすれば環境が出来上がって、docker runすればその環境が動き出すというわけです。
今回は環境の元となるUbuntuの日本語環境のイメージを練習がてら作っておこうと思います。(ubuntu:14.10のイメージは日本語化されていないので。。)
使い捨てのUbuntuの日本語環境がほんの数分で作れれば何かと便利だと思います。
今回は日本語化しかしていないのですが、WebサーバとWebアプリケーションをインストールした環境を作ったり、勉強のための各種言語の環境を作ったりして「Dockerfile」をアップロードしておいて、それを誰かがダウンロードしてビルドするだけで環境が出来上がってしまうのはとても便利ですね。。
また、今回作ったものは「DockerHub」と「GitHub」にアップロードしておこうと思います。

KuDr42X_ITXghJhSInDZekNEF0jLt3NeVxtRye3tqco
やること

  • Dockerfileを作成
  • ubuntu:14.10の日本語化イメージを作成
  • 動作確認
  • DockerHubへのアップロード
  • GitHubからDockerHubへの自動ビルド
  • pullして実行してみる

最終的な成果物は下記に格納しました

●DockerHub
https://registry.hub.docker.com/u/brokendish/docker-ubuntu14.10-ja/

●GitHub
https://github.com/brokendish/Docker_ubuntu14.10_ja

●pullする場合

docker pull brokendish/docker-ubuntu14.10-ja

 

では、はじめてみます。(一気にやってしまうので今回は少し長いです)

Dockerをインストール

sudo apt-get install docker.io

ubuntu14.10を動かしてみる

sudo docker.io run -i -t ubuntu:14.10 /bin/bash

・ubuntu:14.10のイメージがダウンロードされてbashが起動される。
イメージは最小限の構成になっているので、PythonとかWebサーバは入っていないようです。

これに日本語環境を追加していきます

Dockerfileからイメージを作成する
このファイルにUbuntuをベースとして、何をインストールして、環境変数は何を設定して、
何のファイルをコピーしてとかを書いていきます。(ここがインフラのコード化という所ですかね)
今回はUbuntuの日本語環境を作るだけです。

・ディレクトリを作成

mkdir -p ~/DockerFile/ubuntu14.10_ja
cd ~/DockerFile/
cd ubuntu14.10_ja/

・Dockerfileを作成

vi Dockerfile
---------------------------------------
#Ubuntu14.10をベースにする
FROM ubuntu:14.10
 
MAINTAINER brokendish.org
 
#インストールするもの
RUN apt-get update && apt-get -y upgrade
RUN apt-get -y install build-essential
RUN apt-get -y install git
RUN apt-get -y install python
RUN apt-get -y install language-pack-ja-base language-pack-ja ibus-mozc
RUN apt-get -y install man
RUN apt-get -y install manpages-ja
 
#日本語環境設定
RUN update-locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP:ja
 
#環境変数設定
ENV LANG ja_JP.UTF-8
ENV LC_ALL ja_JP.UTF-8
ENV LC_CTYPE ja_JP.UTF-8
 
#その他設定(ファイルをコピー)
ADD .alias /
#RUN source .alias ←ビルドエラーになってしまうので今回は見送り
---------------------------------------

・.aliasファイルを作成

vi .alias
---------------------------------------
alias ll='ls -l --color=auto'
alias ll='ls -laF --color=auto'
alias h='history'
alias la='ls -A --color=auto'
alias l='ls -CF --color=auto'
alias cls='clear'
---------------------------------------

 

イメージを作成(ビルドする)

sudo docker build -t 'brokendish/ubuntu:14.10' .

イメージ一覧で確認

sudo docker images
 
 
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
brokendish/ubuntu 14.10 e671c39db4af 11 seconds ago 877 MB
ubuntu 14.10 525b6e4a4cc8 3 days ago 194.4 MB
ubuntu 14.04 2103b00b3fdf 3 days ago 188.3 MB

IMAGE ID:e671c39db4afでubuntu日本語環境が出来上がりました。

ビルドして出来上がったコンテナを実行する

docker run -t -i e671c39db4af

日本語化できているか確認

foo@hogeubuntu14.10_ja_016

PythonもインストールするようにしたのでPythonの簡易Webサーバがちゃんと動くか確認
その前にコンテナのIPアドレスを確認

ifconfig
inetアドレス:172.17.0.50

・Pythonの簡易Webサーバ起動

root@0e91dcb06ea0:/# python -m CGIHTTPServer

・ホスト側のWebブラウザで確認

Directory listing for - - Mozilla Firefox_017

 

—– コマンド —–
———————————————–
●コンテナを終了する
root@0e91dcb06ea0:/# exit

●コンテナをexitしないでバックグラウンドで実行する(デタッチ)
root@0e91dcb06ea0:/#
「Ctrl+P Ctrl+Q」

●バックグラウンドで実行(デタッチ)しているコンテナをフォアグラウンドにする(アタッチ)
sudo docker attach ubuntu

●プロセス表示
sudo docker ps -a

●イメージ一覧
sudo docker images

●イメージ削除
docker rmi c3d3fda311df

●いちいちsudoするの面倒くさいのでRootユーザでなくてもdockerを使えるようにする
sudo gpasswd -a hoge docker

●docker.ioって入力するの面倒くさいので「docker」に「docker.io」のシンボリックリンクを張る
sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

———————————————–

タグの付与〜DockerHubへのアップロード

だいたいの確認は出来たのでタグを付与する
まずは、イメージを確認

docker images
 
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
brokendish/ubuntu 14.10 e671c39db4af About an hour ago 877 MB

イメージIDは「e671c39db4af」

・タグ付けする

docker tag e671c39db4af brokendish/ubuntu:latest

・イメージを確認

docker images
 
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
brokendish/ubuntu 14.10 e671c39db4af About an hour ago 877 MB
brokendish/ubuntu latest e671c39db4af About an hour ago 877 MB

・コンテナをアップロードする。※DockerHubのユーザ登録は済んでいることとします

docker push brokendish/ubuntu:latest
The push refers to a repository [brokendish/ubuntu] (len: 1)
Sending image list
Pushing repository brokendish/ubuntu (1 tags)
511136ea3c5a: Image already pushed, skipping
08f66fddfdaf: Image already pushed, skipping
ec3b33bafe63: Image already pushed, skipping
499e0f86b235: Image already pushed, skipping
525b6e4a4cc8: Image already pushed, skipping
b23adbd11312: Image successfully pushed
:
:
e671c39db4af: Image successfully pushed
Pushing tag for rev [e671c39db4af] on {https://cdn-registry-1.docker.io/v1/repositories/brokendish/ubuntu/tags/latest}

アップロードが済めばDocker Hubにも反映されている
https://registry.hub.docker.com/u/brokendish/ubuntu/

アップロードしたイメージをダウンロードする場合は

docker pull brokendish/ubuntu

とするとUbuntu14.10の日本語化のイメージがダウンロードされます
———————————————-


GitHubからDockerHubへの自動ビルド

範囲を選択_029

GitHubにコミットすればDockerHubで自動ビルドするようにしてみます。
上記の「●タグの付与〜DockerHubへのアップロード」だとDockerfileが見れないのでDockerfileでどんな設定をしているのかがわからないので、使っても大丈夫なのか不安な部分があるかと思います。
でも、GitHubとDockerHubを連携すればDockerfileが見れるので少しは安心なのかもしれません。

 

①GitHubのリポジトリに登録

foo@hoge:~/DockerFile/ubuntu14.10_ja$ cd ~/DockerFile/ubuntu14.10_ja

・初期設定

foo@hoge:~/DockerFile/ubuntu14.10_ja$ git init
 
Initialized empty Git repository in /home/hoge/DockerFile/ubuntu14.10_ja/.git/

・READMEファイルを作成

foo@hoge:~/DockerFile/ubuntu14.10_ja$ vi README

・ローカルリポジトリに登録

foo@hoge:~/DockerFile/ubuntu14.10_ja$ git add README

・ローカルリポジトリにコミット

foo@hoge:~/DockerFile/ubuntu14.10_ja$ git commit -m 'first commit'
[master (root-commit) 802a8d0] first commit
1 file changed, 2 insertions(+)
create mode 100644 README
foo@hoge:~/DockerFile/ubuntu14.10_ja$

 

・リモートリポジトリの登録

foo@hoge:~/DockerFile/ubuntu14.10_ja$ git remote add origin git@github.com:brokendish/Docker_ubuntu14.10_ja.git

・公開リポジトリに反映

foo@hoge:~/DockerFile/ubuntu14.10_ja$ git push -u origin maste

・ファイルをローカルリポジトリに追加する

foo@hoge:~/DockerFile/ubuntu14.10_ja$ git add .alias Dockerfile
foo@hoge:~/DockerFile/ubuntu14.10_ja$ git commit -m 'first commit'
[master 0cde4e4] first commit
2 files changed, 34 insertions(+)
create mode 100644 .alias
create mode 100644 Dockerfile

・公開リポジトリに反映する

foo@hoge:~/DockerFile/ubuntu14.10_ja$ git push -u origin master
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 798 bytes | 0 bytes/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To git@github.com:brokendish/Docker_ubuntu14.10_ja.git
802a8d0..0cde4e4 master -> master
Branch master set up to track remote branch master from origin.

・反映されたか確認

brokendish-Docker_ubuntu14.10_ja - Google Chrome_019

https://github.com/brokendish/Docker_ubuntu14.10_ja

 

②DockerHubとGitHubのリポジトリ紐付け

メニュー_020 範囲を選択_021 範囲を選択_022 範囲を選択_023 範囲を選択_024 範囲を選択_025 範囲を選択_026 範囲を選択_027

 

③ビルドまち

範囲を選択_028
④ビルド完了

範囲を選択_030
⑤Pull(ダウンロード)して実行してみる

・pullする

docker pull brokendish/docker-ubuntu14.10-ja
Pulling repository brokendish/docker-ubuntu14.10-ja
0b0ddfd34cbe: Download complete
:
5eb2c7aa99f7: Download complete

・イメージを確認

docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
brokendish/docker-ubuntu14.10-ja latest 0b0ddfd34cbe 3 hours ago 803.8 MB

・実行する

docker run -i -t 0b0ddfd34cbe
root@2652d8486cd9:/#

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です