Skip to main content

Posts about container

serversman vps

ServersMan@VPSは、コンテナ型仮想化の virtuozzo を採用した、ホスティングサービス。

Debianで使っていたのだが、間もなくWheezyのLTSサポート期限を迎えるのに、新しいバージョンの対応が公表されないので、名残惜しいけど退会することにした。

よかったこと

  • 東京でサーバを借りられる。固定アドレス。IPv6あり。料金が安い。コスト/パフォーマンス比は悪くないのではないか。
  • 個人用途で、Apache, PosgreSQL, PHPのアプリを動かしていたが、速度等の不満は特になかった。
  • 環境について技術的な内容の問い合わせ(メール)をしたことがあったが、レスポンスの早さ・内容とも悪印象はなかった。

残念なこと

  • DebianでサポートされているバージョンはWheezyが最新。Ubuntuでは(14.04)が最新。(私用ではDebian系を使いたい)
  • 環境に起因する制限がいくつかある。loopデバイスが使えない。コンテナ、仮想環境が使えない等。

各種アプリケーションがプリインストールされたコースもあるが、自分は試したことは無い。 ネットワーク/セキュリティについての理解がある人が、自分で構築できるサーバを個人用途で東京に安く借りたい、性能を求める場合にはそれだけの対価を支払うつもりがある、という場合にはおすすめできる。

(最近は新しいニュースリリースもなく、勝手な見解だが、現在は維持・運用するだけにとどまり、積極的な増設・投資はだいぶ前からやめているのではないかと感じている)

docker life cycle

ライフサイクルをざっと。

dockerデーモンの起動と動作確認。ubuntuの場合。

$ sudo service docker status
$ sudo service docker start
$ sudo docker run --rm hello-world

リポジトリに登録されているイメージを取得する。

$ sudo docker pull debian:latest
Pulling repository debian
6845b83c79fb: Download complete
575489a51992: Download complete
Status: Downloaded newer image for debian:latest
$ 
$ sudo docker images debian
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
debian              latest              6845b83c79fb        13 days ago         125.1 MB
$

コンテナを作成して実行。コンソール接続してbashを実行する例。

$ sudo docker run -it debian:latest /bin/bash
root@06e1a850e923:/# 
root@06e1a850e923:/# w
 22:20:47 up 29 days, 14:32,  0 users,  load average: 0.36, 0.29, 0.24
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root@06e1a850e923:/#
root@06e1a850e923:/# uname -a
Linux 06e1a850e923 3.13.0-63-generic #103-Ubuntu SMP Fri Aug 14 21:42:59 UTC 2015 x86_64 GNU/Linux
root@06e1a850e923:/#
root@06e1a850e923:/# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support/"
BUG_REPORT_URL="https://bugs.debian.org/"
root@06e1a850e923:/#

コンソール接続したコンテナから一旦切断する例。

root@xxxxxxxxxxxx:/# [Ctl+p]-[Ctl+q]
$ 
$ sudo docker ps | grep debian
xxxxxxxxxxxx        debian:latest       "/bin/bash"         About a minute ago   Up About a minute                       berserk_mayer
$

再接続する例。

$ sudo docker attach xxxxxxxxxxxx
root@xxxxxxxxxxxx:/#

コンテナを終了する例。

root@06e1a850e923:/# exit
exit
$

終了したコンテナを再起動する例。

$ sudo docker ps -a | grep debian
xxxxxxxxxxxx        debian:latest            "/bin/bash"            13 minutes ago      Exited (0) 13 seconds ago                                          berserk_mayer
$
$ sudo docker start -i xxxxxxxxxxxx
root@xxxxxxxxxxxx:/# 
root@xxxxxxxxxxxx:/# exit
exit
$

コンテナの状態確認。

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ 
$ sudo docker ps -a | grep debian
06e1a850e923        debian:latest            "/bin/bash"            2 minutes ago       Exited (0) 47 seconds ago                                      evil_kowalevski

$

copy file from/to docker container

$ sudo docker cp xxxxxxxxxxxx:/dirname/filename destination
$ sudo docker cp source xxxxxxxxxxxx:/dirname/filename

コンテナの削除。

$ sudo docker rm 06e1a850e923
06e1a850e923
$ 
$ sudo docker ps -a | grep debian
$

イメージの削除。

$ sudo docker rmi debian:latest
Untagged: debian:latest
Deleted: 6845b83c79fb642ed6af06cceaca042e155717ca8eb0b5cffa9c43f1f7f70348
Deleted: 575489a51992d5d30976ff5ba7f7eabdc134acfb51c79ff48883089009594e64
$
$ sudo docker images debian
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
$

dockerイメージの作成

$ mkdir project && cd project
$ 
$ vi Dockerfile
$ 
$ sudo docker build -t imagename:tagname . | tee build.log
$ 
$ sudo docker images imagename
$

When you want to use proxy, use --build-arg option like bellow

$ sudo docker build --build-arg http_proxy=http://192.168.xxx.xxx:3142/ -t imagename:tagname . | tee build.log

When new image name is , then rename it as below

$ sudo docker tag xxxxxxxxxxxx imagename:tagname
$ 
$ sudo docker images imagename

不要なイメージの一括削除

sudo docker images | awk '$1~/<none>/ {print}'
sudo docker images | awk '$1~/<none>/ {print $3}' | xargs sudo docker rmi

使用するdockerfileの簡単な例。

From debian:latest
RUN apt-get update && apt-get install -y \
    screen \
    openssl \
    vim \
   make \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

arukas

2019/10追記

2020/1/31でのサービス終了が発表されました。すでに新規アカウントの申し込みは終了しています。 無料で使える範囲での活用方法を自分の中で見いだしたところでしたので、とても残念です。 大手サービスプロバイダなのに、2018/03 から始まったサービスが 2020/01 で終了してしまうというのは、あまりに早すぎると感じます。利用者が相当少なかったのでしょうか。

2018/04追記

2018/03下旬からサービスインとなっています。βテストの時との違いや気づいた点を記載します。

  • 利用するには、アカウント作成(招待制)とクレジット情報の登録が必要です。 (無料のプランしか使う予定が無くてもクレジット情報が必要なようです。)
  • 転送量は無料。当初の予告どおり、無料で使えるFreeプランもあります。 (Freeプランでは0.1vcpu、メインメモリ128MB、同時に作成しておけるコンテナは一つだけ、実行できるのも一つだけ。)
  • ドメイン名にtokyoと入っていますが、自分が試したときはIPアドレスは大阪方面のものと判定されました。 (βを使い始めた頃は東京方面のアドレスと判定されましたが、以後どうなったのか確認してません)
  • コントロールパネルのコンテナ作成画面は、利用するプランの選択肢がある以外は、βの時と同じに見えます。

自分にとって「東京(のアドレス)で(無料で)使えるサーバ」というのが、非常に価値が大きかったので、ちょっと残念な感じもあります。 いずれにせよ無料で使えるプランがあるのはありがたいですので、 いろいろ制限がある中、どんなことがどこまでできるのか、試してみたいと思ってます。

2017/08追記

2017/07末をもってβテストが終わりました。そのまま正式サービスに移行するのではなく、一旦サービスを止めたようです。 正式サービスの開始時期は今のところ未定とのことです。

追記ここまで。

arukasは、コンテナ技術のdockerを利用したホスティングサービスです。

逆から読むと、sakura。さくらのVPSでおなじみの、さくらインターネットのサービスです。 無料で利用することができるオープンβテストが4月末ごろから9月末までの予定で行われており、間もなく正式リリースとなるものと思われます。 正式リリースした後も無料で利用できるプランが設定されるようです。

arukasでは、Docker Hubパブリックレポジトリにアップロードされたコンテナを登録して、起動することができます。 Docker Hubには沢山のレポジトリが登録されていますが、自分で作成・登録することもできます。 無いものは自分で作ってしまえばいいので、実際には、どんなコンテナでも動かすことができます。

dockerの利点は、コンテナの作成・起動・終了・削除が迅速にできることで、これはそのままarukasにも当てはまります。 ベータテストのためなのか、以下の制限があります。

  • データ永続化の仕組みがないので、再起動するとデータが消える。
  • 定期的(週に一度くらい?)に再起動される。

そのため永続的に使いたいデータは、外部に置く必要があります。 正式リリース後には変更される可能性もあるかもしれません。

URLとポートを指定すれば、起動したコンテナに外部から接続することができます。この場合は通信プロトコルはhttp(s)に限りません。

同じ内容のものを複数のコンテナで動かすことができますが、この場合、エンドポイントという与えられたurlにhttps接続することで、各コンテナにロードバランスして接続させることができます。(バランスさせるアルゴリズムなどは公開されていないようです。) この時、tlsにより通信内容は暗号化されます。自分で証明書を準備する必要がありません。ただし、プロトコルはhttpに限られます。