Docker管理 · 2 min read · Feb 05, 2026

UbuntuでDockerを使用してLinuxコンテナを管理する

UbuntuでDockerを使用してLinuxコンテナを管理する

バージョン: 1.0
著者: Srijan Kishore
最終編集日: 2014年7月2日

このガイドでは、Dockerをインストールし、仮想マシンを効果的に管理する方法を説明します。Dockerは、開発者やシステム管理者が分散アプリケーションを簡単に構築、展開、実行できるオープンソースのLinux仮想化プラットフォームです。Dockerは、Dockerエンジン、軽量のランタイムおよび仮想化レイヤー、ソースコードリポジトリに似た仮想マシンをパッケージ化およびバージョン管理するためのツール、アプリケーションを共有しワークフローを自動化するためのクラウドサービスであるDocker Hubで構成されています。Dockerは、コンポーネントから迅速に組み立てられたアプリケーションを可能にし、開発環境、品質管理、製品間の摩擦を排除します。

1 前提条件

私の場合、Ubuntu 14.04を使用しており、そこにDockerをインストールします。仮想化ソフトウェア市場には、KVM、Xen、Hyper-Vなどのフルハードウェア仮想化技術がいくつかあります。しかし、フル仮想化はLinux上で単一のアプリケーションを仮想化するには重すぎます。この状況を克服するために、Linuxコンテナを使用することができ、これはオペレーティングシステムレベルの仮想化の良い代替手段です。Linuxコンテナは、セキュリティが確保された一群のコンテナ内で開発/テスト環境を持つために非常に便利です。Dockerはこの目的のためにLinuxコンテナ環境を提供します。

2 インストール

上記のように、私はDockerをインストールするためにUbuntuを使用します。この章では、Dockerをインストールするための2つのオプションを示します。2aでは、UbuntuリポジトリからのDockerバージョンを使用します。このバージョンは、LTSサポートの5年間の間、Ubuntuによって維持されますが、最新のバージョンではありません。2bでは、Ubuntu PPAリポジトリからの最新バージョンを使用します。Dockerは活発に開発されているため、2b)からの最新のDockerバージョンはほとんどのユーザーに適しているでしょう。2aまたは2bのいずれかの方法を使用してくださいが、同時に両方を使用しないでください!

2a 公式Ubuntuリポジトリからインストール

インストールするには、次のコマンドを使用します:

sudo apt-get update  
sudo apt-get install docker.io

シェルでの使用を容易にするためにシンボリックリンクを作成します。

sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker  
sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io

2b 最新のDockerバージョンをインストール

docker.ioリポジトリから最新のDockerバージョンをインストールするには、次のコマンドを実行します。

curl -s https://get.docker.io/ubuntu/ | sudo sh

3 シェル環境の準備

今、私はユーザーsrijanをDockerグループに追加します。

sudo usermod -a -G docker srijan

または、次のように使用します:

sudo usermod -a -G docker $USER

ここで、現在のセッションからログアウトし、再度ログインします。次に、Dockerの設定ファイルを追加して、その場所をシステムに通知します。

sudo vi /etc/default/docker.io

| DOCKER="/usr/bin/docker.io" |

サービスを次のように再起動します:

sudo service docker.io restart

4 コンテナ管理

私はUbuntuオペレーティングシステムを使用してコンテナを起動します。次のようにDockerイメージをダウンロードします:

docker pull ubuntu
 注意: pullはレジストリからイメージまたはリポジトリを取得するために使用されます   

次に、次のようにUbuntuコンテナのbashシェルにログインします:

docker run -i -t ubuntu /bin/bash

確認のために、次のようにコンテナのIPを確認します:

root@fd98ee950252:/# ifconfig 
eth0      Link encap:Ethernet  HWaddr 5a:a6:c6:88:f2:48  
          inet addr:172.17.0.3  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::58a6:c6ff:fe88:f248/64 Scope:Link
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:7 errors:0 dropped:2 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:558 (558.0 B)  TX bytes:648 (648.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@fd98ee950252:/#

私のコンテナのIPは172.17.0.3です。同様に、他のコンテナも使用できます。コンテナを終了するには、次のように入力します:

exit

同様に、他のOSコンテナを持つこともできます。例えば、

Debianコンテナを使用したい場合、次のコードを使用します:

docker run -i -t debian /bin/bash

特定のディストリビューションを持ちたい場合は、次のように使用します:

docker run -i -t ubuntu:12.04 /bin/bash

これにより、ubuntu12.04コンテナが作成されます。次のように確認します:

root@44b56100fd1f:/# cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.4 LTS"
root@44b56100fd1f:/#

4 自分のイメージを作成する

Dockerイメージを作成する方法は2つあります:

  • docker commitコマンドを使用する
  • Dockerfileを使用してdocker buildコマンドを使用する

docker commitメソッドは現在推奨されていません。Dockerfileを使用してビルドする方がはるかに柔軟で強力ですが、完全性のためにそれを示します。その後、Dockerイメージを構築するための推奨方法であるDockerfileの作成とdocker buildコマンドの使用に焦点を当てます。

4.1 Docker commitを使用してイメージを作成する

コンテナを作成し、そのコンテナに変更を加え、コードを変更するように、その変更を新しいイメージにコミットします。

まず、以前に使用したubuntuイメージからコンテナを作成します。

docker run -i -t ubuntu /bin/bash  
root@73527b8b4261:/#
注意: 上記のように、rootはホスト名73527b8b4261を表示しています。これは作成されたコンテナ名であり、あなたの場合は異なるでしょう。

さらに、そこにapacheをインストールします:

apt-get install apache2

私はコンテナを起動し、その中にApacheをインストールしました。今、私はこのコンテナをウェブサーバーとして使用するつもりなので、現在の状態で保存します。
これにより、新しいコンテナを作成するたびにApacheを再構築する必要がなくなります。これを行うために、exitコマンドを使用してコンテナから退出し、docker commitコマンドを使用します。

exit
docker commit 73527b8b4261 srijan/apache2 8ce0ea7a1528

注意: ここで73527b8b4261は私のコンテナ名であり、8ce0ea7a1528はコンテナのタグとして使用しています。任意のタグ名を付けることができます。

最後に作成されたコンテナのIDを忘れた場合は、次のように使用できます:

docker ps -l -q

これにより73527b8b4261が得られます。

注意: 73527b8b4261は最後に作成されたコンテナ名であり、あなたの場合は異なるでしょう。*

新しいイメージを確認してみましょう。次のように実行できます:

docker images srijan/apache2
srijan@vboxtest:~$ docker images srijan/apache2
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
srijan/apache2      8ce0ea7a1528        741155868ac8        6 minutes ago       207.2 MB
srijan@vboxtest:~$
注意: ここで8ce0ea7a1528はコンテナを保存する際に使用したタグ名です。   
注意: 741155868ac8はそのコンテナのIMAGE IDです。   
注意: これらの値は、コンテナを保存する際にDockerがランダムな名前を生成するため、あなたの場合は異なるでしょう。

カスタマイズされたイメージを次のように保存します:

docker commit -m="新しいカスタムイメージ" --author="Srijan Kishore" 73527b8b4261 srijan/apache2:webserver  

結果は次のようになります:

srijan@vboxtest:~$ docker commit -m="新しいカスタムイメージ" --author="Srijan Kishore" 73527b8b4261 srijan/apache2:webserver
f0367362eb405c513ac002b5cf172a2c0bc6c8212eab91c613f9ee611cf92fec

新しいイメージからコンテナを実行するには、docker runコマンドを使用できます。

docker run -t -i srijan/apache2:webserver /bin/bash

コミットしたイメージを次のように確認できます:

docker inspect srijan/apache2:webserver
srijan@vboxtest:~$ docker inspect srijan/apache2:webserver
[{
    "Architecture": "amd64",
    "Author": "Srijan Kishore",
    "Comment": "新しいカスタムイメージ",
    "Config": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": [
            "/bin/bash"
        ],
        "CpuShares": 0,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": null,
        "Env": [
            "HOME=/",
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
        ],
        "ExposedPorts": null,
        "Hostname": "",
        "Image": "",
        "Memory": 0,
        "MemorySwap": 0,
        "NetworkDisabled": false,
        "OnBuild": null,
        "OpenStdin": false,
        "PortSpecs": null,
        "StdinOnce": false,
        "Tty": false,
        "User": "",
        "Volumes": null,
        "WorkingDir": ""
    },
    "Container": "73527b8b42614f6ecd83fb5f9822d6086988d3b68fd5e32b4afbc7cd415402fd",
    "ContainerConfig": {
        "AttachStderr": true,
        "AttachStdin": true,
        "AttachStdout": true,
        "Cmd": [
            "/bin/bash"
        ],
        "CpuShares": 0,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": null,
        "Env": [
            "HOME=/",
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
        ],
        "ExposedPorts": null,
        "Hostname": "73527b8b4261",
        "Image": "ubuntu",
        "Memory": 0,
        "MemorySwap": 0,
        "NetworkDisabled": false,
        "OnBuild": null,
        "OpenStdin": true,
        "PortSpecs": null,
        "StdinOnce": true,
        "Tty": true,
        "User": "",
        "Volumes": null,
        "WorkingDir": ""
    },
    "Created": "2014-06-30T12:58:04.973349049Z",
    "DockerVersion": "1.0.1",
    "Id": "f0367362eb405c513ac002b5cf172a2c0bc6c8212eab91c613f9ee611cf92fec",
    "Os": "linux",
    "Parent": "ef83896b7fb99b00b9e0e6ac943826386e7edcef11a3a2f58b42011ab4a4e683",
    "Size": 14463026
}
]srijan@vboxtest:~$

新しいイメージからコンテナを実行するには、docker runコマンドを使用できます。

docker run -t -i srijan/apache2:webserver /bin/bash
Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。