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.io2b 最新のDockerバージョンをインストール
docker.ioリポジトリから最新のDockerバージョンをインストールするには、次のコマンドを実行します。
curl -s https://get.docker.io/ubuntu/ | sudo sh3 シェル環境の準備
今、私はユーザー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 restart4 コンテナ管理
私は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コマンドを使用します。
exitdocker commit 73527b8b4261 srijan/apache2 8ce0ea7a1528注意: ここで73527b8b4261は私のコンテナ名であり、8ce0ea7a1528はコンテナのタグとして使用しています。任意のタグ名を付けることができます。
最後に作成されたコンテナのIDを忘れた場合は、次のように使用できます:
docker ps -l -qこれにより73527b8b4261が得られます。
注意: 73527b8b4261は最後に作成されたコンテナ名であり、あなたの場合は異なるでしょう。*新しいイメージを確認してみましょう。次のように実行できます:
docker images srijan/apache2srijan@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:webserversrijan@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新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。