31
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker in Docker

本記事では Docker の中で Docker を使う技を紹介します。

Docker in Docker とは?

Docker コンテナの中で Docker コンテナを動かす技術です。
Docker の中で Docker を動かすには特権モード (privileged) を使います。
特権モードは Docker の機能のオプションの1つとしてデフォルトで存在します。

何がうれしいの?

Docker コンテナを管理するサーバ(以下、Docker管理サーバ)を Docker で動かしたい場合に使うと非常に便利です。
通常の使い方としては Docker 管理サーバをホストにインストールして・・・、という運用になります。
しかし、管理サーバ自体のインストール自体も Docker でやりたいなー、と Docker 使いとしては思うわけです。

Docker in Docker の例として Dokku Alternative (dokku-alt) という Heroku のようなホスティング機能を Docker で実現できるサーバを Docker の上に構築する方法を紹介します。

dokku-alt って何?

dokku-alt はローカル環境に Heroku 的なホスティングサーバを構築できる OSS です。
dokku-alt のメリットは Dockerfile を書く必要がないことです!
通常、 Docker 環境を構築するためには Dockerfile に設定を書きますが、
dokku-alt では Procfile というアプリの実行設定を書きます。
Procfile の代わりに(通常の) Dockerfile を使うこともできます。
git push するだけでアプリケーションを配備できます。

dokku-alt の構築

以下の手順で dokku-alt をインストールします。
ホストには既に Docker がインストールされているものとします。

  1. dokku-alt のインストール

     $ sudo docker run --volume=/home/dokku --volume=/var/lib/docker --name=dokku-alt-data busybox:latest
    
  2. dokku-alt の実行

     $ sudo docker run -d --name=dokku-alt --hostname=my-domain.com --volumes-from=dokku-alt-data --publish=10022:22 --publish=80:80 --publish=443:443 --privileged ayufan/dokku-alt:latest
    
  3. ssh 情報の取得

     $ sudo docker logs dokku-alt
    
     dokku.1 | SSH Login:  
     dokku.1 |   user: root  
     dokku.1 |   password: XXXXXXX
     dokku.1 |   ip: 10.0.xx.xx 172.17.xx.xx  
     dokku.1 | Starting dokku daemon...
    
  4. 初期設定

     $ ssh -p 10022 root@172.17.xx.xx "curl -L https://github.com/(YOUR_NAME).keys | while read f; do echo $f | dokku access:add; done"
    
  5. アプリのデプロイ

     $ git clone https://github.com/heroku/node-js-sample.git
     $ cd node-js-sample
     $ git remote add dokku dokku@172.17.xx.xx:node-js-sample
     $ ssh -p 10022 root@172.17.xx.xx "dokku domains:set dokku.172.17.xx.xx.xip.io"
     $ git push dokku master
    
  6. 動作確認

     $ curl -v http://node-js-sample.dokku.172.17.xx.xx.xip.io
    

まとめ

  • まだ Dockerfile を手で書いてるの?
  • dokku-alt 楽しい!

参考文献

宣伝

会社のエンジニアブログでも Docker の記事を書いてます。

31
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?