blog

チュートリアル:Dockerの助けを借りてUbuntu上でLinuxコンテナを管理する

DockerはLinuxコンテナのデプロイを容易にするために開発されたオープンソースツールです。Dockerはコンテナ技術のデファクトスタンダードになりつつあり、UbuntuやRed Hatなどの主要...

Oct 5, 2019 · 5 min. read
シェア

もう1つの軽量仮想化アプローチは、いわゆるLinuxコンテナで、オペレーティング・システム・レベルの仮想化を提供します。LXCでは、仮想マシンを実行するオーバーヘッドがないため、ユーザーは軽量コンテナ・サンドボックス内で標準Linuxオペレーティング・システムの複数のインスタンスを実行できます。コンテナは、複製可能な開発/テスト環境を構築する場合や、安全なサンドボックス内でアプリケーションをデプロイする場合に便利です。

Linuxコンテナのデプロイを容易にするために開発されたオープンソースツールで、UbuntuやRed Hatなどの主要なLinuxディストリビューションに採用され、コンテナ技術のデファクトスタンダードに急速になりつつあります。

このチュートリアルでは、Ubuntu 14.04上でDockerの助けを借りてLinuxコンテナを管理する方法を紹介します。注意:Ubuntuの以前のバージョンでは、手順が若干異なる場合があります。

現在、Ubuntuで利用可能なDockerパッケージは64ビットシステムのみをサポートしています。32ビットマシンで実行するには、ソースコードを使って32ビット版のDockerをビルドする必要があります。

Dockerのインストール

Dockerのインストールはapt-getコマンドで簡単にできます。

$ sudo apt-get install docker.io 

非 root ユーザーが Docker を実行できるようにするには、自分自身を docker グループに追加します。以下のコマンドは、現在のユーザーがroot権限なしでDockerを実行できるようにします。

$ sudo usermod -a -G docker $USER 

グループメンバーシップの変更を有効にするには、ログアウトしてからログインし直してください。

次に、Docker設定ファイルを編集して、Dockerバイナリコードの場所を更新します。

$ sudo vi /etc/default/docker.io 
DOCKER="/usr/bin/docker.io" 

Dockerサービスを再起動します。

$ sudo service docker.io restart 

Dockerコンテナの管理

Ubuntu OS用の新しいDockerコンテナを起動するには、まずUbuntu Dockerイメージ・ファイルを入手する必要があります。以下のコマンドは、ネットワーク経由でDockerイメージファイルをダウンロードします。

$ docker pull ubuntu 

以下のように、Ubuntu Dockerを対話モードで起動することができます。*** パラメータ"/bin/bash "は、コンテナが起動したらコンテナ内で実行されるコマンドです。

$ docker run -i -t ubuntu /bin/bash 

上記のコマンドを実行すると、すぐにUbuntuコンテナが起動し、コンテナ内にシェルプロンプトが表示されます。この時点で、サンドボックス環境内で標準のUbuntuオペレーティング・システムにアクセスできるはずです。

Dockerコンテナを終了するには、コンテナ内のプロンプトで「exit」と入力します。

さまざまな形式のコンテナを起動できます。例えば、Fedora コンテナを起動するには、次のコマンドを実行します:

$ docker.io run -i -t fedora /bin/bash 

ローカルに Fedora Docker イメージファイルがない場合、このコマンドはまず自動的にイメージファイルをダウンロードし、それから Docker を起動します。

特定のディストリビューション・バージョンを採用したコンテナを起動したい場合は、それも可能です。例えば、Ubuntu 13.04 Dockerを起動するには、以下のコマンドを実行します:

$ docker.io run -i -t ubuntu:13.04 /bin/bash 

コンテナネットワーク

DockerはLinuxブリッジを使ってコンテナ同士を相互接続し、外部ネットワークに接続します。Dockerをインストールすると、デフォルトでdocker0 Linuxブリッジが自動的に組み立てられるはずです。作成した各コンテナはdocker0ブリッジインターフェースに接続します。

カスタムLinuxブリッジ

必要であれば、カスタム Linux ブリッジを使用してコンテナを相互接続することもできます。これを行うには、カスタムブリッジを作成し、以下のように設定します。このブリッジに別のサブネットを割り当て、そのサブネットからDockerにIPアドレスを割り当てることができます。ここではDockerのサブネットとして10.0.0.0/24を使用します。

$ sudo apt-get install bridge-utils 
$ sudo brctl addbr br0 
$ sudo ifconfig br0 .1 netmask 255.255.255.0 

Dockerにカスタムブリッジを使用させるには、/etc/default/docker.ioのDOCKER_OPTS変数に"-b=br0 "を追加し、Dockerサービスを再起動します。

$ sudo service docker.io restart 

この時点で、新しいコンテナはbr0に接続され、IPアドレスは10.0.0.0/24から自動的に割り当てられます。

その他のカスタマイズ

Dockerのデフォルトのネットワーク設定をカスタマイズする方法は他にもいくつかあり、主に/etc/default/docker.ioのDOCKER_OPTS変数を変更します。

  • "-dns 8.8.8.8 -dns 8.8.4.4": コンテナが使用する DNS サーバーを指定します。
  • "-icc=false":コンテナ同士を隔離しておきます。

障害解決

1.docker.ioコマンドを実行すると、以下のエラーが発生します。

dial unix /var/run/docker.sock: no such file or directory((そのようなファイルやディレクトリはない) 

このエラーはDockerデーモンが起動していないために発生する可能性があります。Dockerデーモンのステータスを確認し、まず起動していることを確認してください。

$ sudo service docker.io status 
$ sudo service docker.io start 
Read next

UCブラウザーはPCとテレビに拡大する計画か?

Symbian時代のUCは、iOSとAndroid端末への参入のための堅実な製品は、多くの "口コミ配当 "をもたらし、そして今UCは、より多くのユーザーを接続し、より多くの画面を横断する準備が整いましたが、それはiOSとAndroidユーザーを獲得するよりもはるかに困難であるように見えます。

Oct 4, 2019 · 2 min read