Docker管理 · 7 min read · Feb 05, 2026
UbuntuでDockerを使用してLinuxコンテナを管理する - ページ2
4.2 Dockerfileを使用したイメージのビルド
Dockerfileは、Dockerイメージをビルドするための命令を含む基本的なDSLを使用します。次に、docker buildコマンドを使用してDockerfileの指示から新しいイメージをビルドします。Docker, Inc.のチームは、Dockerfileの作成方法を学ぶためのDockerfileチュートリアルも公開しています。
さて、ユーザーの要件に応じてさらに強化できるシンプルなdockerファイルを作成します。まず、ディレクトリを作成します。例えば、dir=kishoreとします:
mkdir kishore
cd kishore次に、次のようにDockerfileを作成します:
vi Dockerfile & 次の内容を入力します:
| FROM ubuntu:12.04 MAINTAINER Srijan Kishore <[email protected]> RUN apt-get -qq update RUN apt-get -qqy install apache2 |
カスタマイズされたコンテナを開くには、次のようにします:
sudo docker build -t="srijan/custom1" .次のような出力が得られます:
srijan@vboxtest:~/kishore$ sudo docker build -t="srijan/custom1" .
[sudo] password for srijan:
Sending build context to Docker daemon 2.56 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu:12.04
Pulling repository ubuntu
ea7d6801c538: Download complete
511136ea3c5a: Download complete
65b7e9ccb809: Download complete
f8dd6bd14f58: Download complete
a343823119db: Download complete
---> ea7d6801c538
Step 1 : MAINTAINER Srijan Kishore <[email protected]>
---> Running in a6135f405eb4
---> be97c22efa82
Removing intermediate container a6135f405eb4
Step 2 : RUN apt-get -qq update
---> Running in b5681cd85ba8
---> cbc3a95de894
Removing intermediate container b5681cd85ba8
Step 3 : RUN apt-get -qqy install apache2
---> Running in 5765c09b530f
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libsqlite3-0.
(Reading database ... 7551 files and directories currently installed.)
Unpacking libsqlite3-0 (from .../libsqlite3-0_3.7.9-2ubuntu1.1_amd64.deb) ...
Selecting previously unselected package libroken18-heimdal.
Unpacking libroken18-heimdal (from .../libroken18-heimdal_1.6~git20120311.dfsg.1-2ubuntu0.1_amd64.deb) ...
Selecting previously unselected package libasn1-8-heimdal.
Unpacking libasn1-8-heimdal (from .../libasn1-8-heimdal_1.6~git20120311.dfsg.1-2ubuntu0.1_amd64.deb) ...
Selecting previously unselected package libgpg-error0.
Unpacking libgpg-error0 (from .../libgpg-error0_1.10-2ubuntu1_amd64.deb) ...
Selecting previously unselected package libgcrypt11.
Unpacking libgcrypt11 (from .../libgcrypt11_1.5.0-3ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libgdbm3.
Unpacking libgdbm3 (from .../libgdbm3_1.8.3-10_amd64.deb) ...
Selecting previously unselected package libp11-kit0.
Unpacking libp11-kit0 (from .../libp11-kit0_0.12-2ubuntu1_amd64.deb) ...
Selecting previously unselected package libtasn1-3.
Unpacking libtasn1-3 (from .../libtasn1-3_2.10-1ubuntu1.1_amd64.deb) ...
Selecting previously unselected package libgnutls26.
Unpacking libgnutls26 (from .../libgnutls26_2.12.14-5ubuntu3.8_amd64.deb) ...
Selecting previously unselected package libhcrypto4-heimdal.
Unpacking libhcrypto4-heimdal (from .../libhcrypto4-heimdal_1.6~git20120311.dfsg.1-2ubuntu0.1_amd64.deb) ...
Selecting previously unselected package libheimbase1-heimdal.
Unpacking libheimbase1-heimdal (from .../libheimbase1-heimdal_1.6~git20120311.dfsg.1-2ubuntu0.1_amd64.deb) ...
Selecting previously unselected package libwind0-heimdal.
Unpacking libwind0-heimdal (from .../libwind0-heimdal_1.6~git20120311.dfsg.1-2ubuntu0.1_amd64.deb) ...
Selecting previously unselected package libhx509-5-heimdal.
Unpacking libhx509-5-heimdal (from .../libhx509-5-heimdal_1.6~git20120311.dfsg.1-2ubuntu0.1_amd64.deb) ...
Selecting previously unselected package libkrb5-26-heimdal.
Unpacking libkrb5-26-heimdal (from .../libkrb5-26-heimdal_1.6~git20120311.dfsg.1-2ubuntu0.1_amd64.deb) ...
Selecting previously unselected package libheimntlm0-heimdal.
Unpacking libheimntlm0-heimdal (from .../libheimntlm0-heimdal_1.6~git20120311.dfsg.1-2ubuntu0.1_amd64.deb) ...
Selecting previously unselected package libgssapi3-heimdal.
Unpacking libgssapi3-heimdal (from .../libgssapi3-heimdal_1.6~git20120311.dfsg.1-2ubuntu0.1_amd64.deb) ...
Selecting previously unselected package libsasl2-2.
Unpacking libsasl2-2 (from .../libsasl2-2_2.1.25.dfsg1-3ubuntu0.1_amd64.deb) ...
Selecting previously unselected package libldap-2.4-2.
Unpacking libldap-2.4-2 (from .../libldap-2.4-2_2.4.28-1.1ubuntu4.4_amd64.deb) ...
Selecting previously unselected package libcap2.
Unpacking libcap2 (from .../libcap2_1%3a2.22-1ubuntu3_amd64.deb) ...
Selecting previously unselected package libexpat1.
Unpacking libexpat1 (from .../libexpat1_2.0.1-7.2ubuntu1.1_amd64.deb) ...
Selecting previously unselected package libmagic1.
Unpacking libmagic1 (from .../libmagic1_5.09-2ubuntu0.3_amd64.deb) ...
Selecting previously unselected package file.
Unpacking file (from .../file_5.09-2ubuntu0.3_amd64.deb) ...
Selecting previously unselected package mime-support.
Unpacking mime-support (from .../mime-support_3.51-1ubuntu1_all.deb) ...
Selecting previously unselected package netbase.
Unpacking netbase (from .../netbase_4.47ubuntu1_all.deb) ...
Selecting previously unselected package libsasl2-modules.
Unpacking libsasl2-modules (from .../libsasl2-modules_2.1.25.dfsg1-3ubuntu0.1_amd64.deb) ...
Selecting previously unselected package openssl.
Unpacking openssl (from .../openssl_1.0.1-4ubuntu5.16_amd64.deb) ...
Selecting previously unselected package libapr1.
Unpacking libapr1 (from .../libapr1_1.4.6-1_amd64.deb) ...
Selecting previously unselected package libaprutil1.
Unpacking libaprutil1 (from .../libaprutil1_1.3.12+dfsg-3_amd64.deb) ...
Selecting previously unselected package libaprutil1-dbd-sqlite3.
Unpacking libaprutil1-dbd-sqlite3 (from .../libaprutil1-dbd-sqlite3_1.3.12+dfsg-3_amd64.deb) ...
Selecting previously unselected package libaprutil1-ldap.
Unpacking libaprutil1-ldap (from .../libaprutil1-ldap_1.3.12+dfsg-3_amd64.deb) ...
Selecting previously unselected package apache2.2-bin.
Unpacking apache2.2-bin (from .../apache2.2-bin_2.2.22-1ubuntu1.6_amd64.deb) ...
Selecting previously unselected package apache2-utils.
Unpacking apache2-utils (from .../apache2-utils_2.2.22-1ubuntu1.6_amd64.deb) ...
Selecting previously unselected package libswitch-perl.
Unpacking libswitch-perl (from .../libswitch-perl_2.16-2_all.deb) ...
Selecting previously unselected package libclass-isa-perl.
Unpacking libclass-isa-perl (from .../libclass-isa-perl_0.36-3_all.deb) ...
Selecting previously unselected package perl-modules.
Unpacking perl-modules (from .../perl-modules_5.14.2-6ubuntu2.4_all.deb) ...
Selecting previously unselected package perl.
Unpacking perl (from .../perl_5.14.2-6ubuntu2.4_amd64.deb) ...
Selecting previously unselected package apache2.2-common.
Unpacking apache2.2-common (from .../apache2.2-common_2.2.22-1ubuntu1.6_amd64.deb) ...
Selecting previously unselected package apache2-mpm-worker.
Unpacking apache2-mpm-worker (from .../apache2-mpm-worker_2.2.22-1ubuntu1.6_amd64.deb) ...
Selecting previously unselected package apache2.
Unpacking apache2 (from .../apache2_2.2.22-1ubuntu1.6_amd64.deb) ...
Selecting previously unselected package ssl-cert.
Unpacking ssl-cert (from .../ssl-cert_1.0.28ubuntu0.1_all.deb) ...
Setting up libsqlite3-0 (3.7.9-2ubuntu1.1) ...
Setting up libroken18-heimdal (1.6~git20120311.dfsg.1-2ubuntu0.1) ...
Setting up libasn1-8-heimdal (1.6~git20120311.dfsg.1-2ubuntu0.1) ...
Setting up libgpg-error0 (1.10-2ubuntu1) ...
Setting up libgcrypt11 (1.5.0-3ubuntu0.2) ...
Setting up libgdbm3 (1.8.3-10) ...
Setting up libp11-kit0 (0.12-2ubuntu1) ...
Setting up libtasn1-3 (2.10-1ubuntu1.1) ...
Setting up libgnutls26 (2.12.14-5ubuntu3.8) ...
Setting up libhcrypto4-heimdal (1.6~git20120311.dfsg.1-2ubuntu0.1) ...
Setting up libheimbase1-heimdal (1.6~git20120311.dfsg.1-2ubuntu0.1) ...
Setting up libwind0-heimdal (1.6~git20120311.dfsg.1-2ubuntu0.1) ...
Setting up libhx509-5-heimdal (1.6~git20120311.dfsg.1-2ubuntu0.1) ...
Setting up libkrb5-26-heimdal (1.6~git20120311.dfsg.1-2ubuntu0.1) ...
Setting up libheimntlm0-heimdal (1.6~git20120311.dfsg.1-2ubuntu0.1) ...
Setting up libgssapi3-heimdal (1.6~git20120311.dfsg.1-2ubuntu0.1) ...
Setting up libsasl2-2 (2.1.25.dfsg1-3ubuntu0.1) ...
Setting up libldap-2.4-2 (2.4.28-1.1ubuntu4.4) ...
Setting up libcap2 (1:2.22-1ubuntu3) ...
Setting up libexpat1 (2.0.1-7.2ubuntu1.1) ...
Setting up libmagic1 (5.09-2ubuntu0.3) ...
Setting up file (5.09-2ubuntu0.3) ...
Setting up mime-support (3.51-1ubuntu1) ...
update-alternatives: using /usr/bin/see to provide /usr/bin/view (view) in auto mode.
Setting up netbase (4.47ubuntu1) ...
Setting up libsasl2-modules (2.1.25.dfsg1-3ubuntu0.1) ...
Setting up openssl (1.0.1-4ubuntu5.16) ...
Setting up libapr1 (1.4.6-1) ...
Setting up libaprutil1 (1.3.12+dfsg-3) ...
Setting up libaprutil1-dbd-sqlite3 (1.3.12+dfsg-3) ...
Setting up libaprutil1-ldap (1.3.12+dfsg-3) ...
Setting up apache2.2-bin (2.2.22-1ubuntu1.6) ...
Setting up apache2-utils (2.2.22-1ubuntu1.6) ...
Setting up libclass-isa-perl (0.36-3) ...
Setting up ssl-cert (1.0.28ubuntu0.1) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
Setting up libswitch-perl (2.16-2) ...
Setting up perl-modules (5.14.2-6ubuntu2.4) ...
Setting up perl (5.14.2-6ubuntu2.4) ...
update-alternatives: using /usr/bin/prename to provide /usr/bin/rename (rename) in auto mode.
Setting up apache2.2-common (2.2.22-1ubuntu1.6) ...
Enabling site default.
Enabling module alias.
Enabling module autoindex.
Enabling module dir.
Enabling module env.
Enabling module mime.
Enabling module negotiation.
Enabling module setenvif.
Enabling module status.
Enabling module auth_basic.
Enabling module deflate.
Enabling module authz_default.
Enabling module authz_user.
Enabling module authz_groupfile.
Enabling module authn_file.
Enabling module authz_host.
Enabling module reqtimeout.
Setting up apache2-mpm-worker (2.2.22-1ubuntu1.6) ...
invoke-rc.d: policy-rc.d denied execution of start.
Setting up apache2 (2.2.22-1ubuntu1.6) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
---> 634855a43331
Removing intermediate container 5765c09b530f
Successfully built 634855a43331
srijan@vboxtest:~/kishore$新しいイメージを確認してみましょう。これには、docker imagesコマンドを使用します。
docker images srijan/custom1srijan@vboxtest:~/kishore$ docker images srijan/custom1
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
srijan/custom1 latest 634855a43331 About a minute ago 277.4 MB
srijan@vboxtest:~/kishore$ここでは、デフォルトでapache2がインストールされていることがわかります。次のように確認してみましょう:
docker run -t -i srijan/apache2:webserver /bin/bashこれで、12.04ubuntuがプリインストールされたapache2を持つ新しいコンテナに入ることができます。
5 ホスト名の変更
ホスト名を変更したい場合、またはカスタマイズされたホスト名(例:server1.example.com)を希望する場合は、次のようにします。
docker run -h 'server1.example.com' -t -i srijan/custom1 /bin/bash次のようなイメージコンテナが得られます:
srijan@vboxtest:~/kishore$ docker run -h 'server1.example.com' -t -i srijan/custom1 /bin/bash
root@server1:/# hostname -f
server1.example.com
root@server1:/#6 Dockerの便利なコマンド
- pull (pullは、レジストリからイメージまたはリポジトリを取得するために使用されます)
例:
docker run -i -t ubuntu /bin/bash- commit (commitは、コンテナを保存するために使用されます)
例:
docker commit 73527b8b4261 srijan/apache2 8ce0ea7a1528- cp (コンテナのファイルシステムからホストパスにファイル/フォルダをコピーします。パスはファイルシステムのルートに対して相対的です。)
例:
docker cp CONTAINER:PATH HOSTPATHここで、CONTAINERはコンテナであり、PATHからHOSTPATHにファイル/フォルダをコピーします。
- startおよびstopコンテナ:
docker start 4386fb97867ddocker stop 4386fb97867dここで、4386fb97867dはコンテナ番号です。
- export (ファイルシステムの内容をSTDOUTにtarアーカイブとしてエクスポートします)
docker export 4386fb97867d > latest.tar- import (空のファイルシステムイメージを作成し、tarボール(.tar, .tar.gz, .tgz, .bzip, .tar.xz, .txz)の内容をインポートし、その後オプションでタグを付けます。)
docker import http://example.com/exampleimage.tgzローカルファイルからインポート:
パイプとstdinを介してdockerにインポートします。
cat exampleimage.tgz | sudo docker import - exampleimagelocal:newローカルディレクトリからインポート:
sudo tar -c . | sudo docker import - exampleimagedir
- history (イメージの履歴を表示します)
docker history [OPTIONS] IMAGEsudo docker history ea7d6801c538- images (イメージを表示します)
docker images [OPTIONS] [NAME]いくつかのオプションに従います:
-a, –all=false すべてのイメージを表示します(デフォルトでは中間イメージレイヤーをフィルタリングします)
-f, –filter=[]: フィルタ値を提供します(例:’dangling=true’)
–no-trunc=false 出力を切り捨てません
-q, –quiet=false 数値IDのみを表示します
- info (システム全体の情報を表示します)
srijan@VE130214:~$ sudo docker infosrijan@vboxtest:~$ sudo docker info
Containers: 20
Images: 65
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Dirs: 105
Execution Driver: native-0.2
Kernel Version: 3.13.0-30-generic
WARNING: No swap limit support- inspect (コンテナ/イメージの低レベル情報を返します)
docker inspect CONTAINER|IMAGE [CONTAINER|IMAGE...]- kill (実行中のコンテナを終了させる/ SIGKILLまたは指定されたシグナルを送信します)
docker kill [OPTIONS] CONTAINER [CONTAINER...]- login (dockerレジストリサーバーに登録またはログインします。サーバーが指定されていない場合は、” https://index.docker.io/v1/ “がデフォルトです。)
docker login localhost:8080 それは自己ホストされたレジストリにログインします。
- logs (コンテナのログを取得します)
docker logs CONTAINER- ps (コンテナのリストを表示します)
docker ps [OPTIONS]それには次のオプションがあります:
-a, –all=false すべてのコンテナを表示します。デフォルトでは実行中のコンテナのみが表示されます。
–before=”” Idまたは名前の前に作成されたコンテナのみを表示し、非実行中のものも含めます。
-l, –latest=false 最後に作成されたコンテナのみを表示し、非実行中のものも含めます。
-n=-1 最後に作成されたn個のコンテナを表示し、非実行中のものも含めます。
–no-trunc=false 出力を切り捨てません
-q, –quiet=false 数値IDのみを表示します
-s, –size=false サイズを表示します
–since=”” Idまたは名前の後に作成されたコンテナのみを表示し、非実行中のものも含めます。
- push (イメージまたはリポジトリをレジストリにプッシュします)
docker push NAME[:TAG]- restart (実行中のコンテナを再起動します)
docker restart [OPTIONS] CONTAINER [CONTAINER...]- rm (1つ以上のコンテナを削除します)
docker rm [OPTIONS] CONTAINER [CONTAINER...]- rmi (1つ以上のイメージを削除します)
docker rmi IMAGE [IMAGE...]- run (新しいコンテナでコマンドを実行します)
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]次のオプションがあります:
-a, –attach=[] stdin、stdout、またはstderrに接続します。
-c, –cpu-shares=0 CPUシェア(相対的な重み)
–cidfile=”” コンテナIDをファイルに書き込みます
-d, –detach=false デタッチモード:バックグラウンドでコンテナを実行し、新しいコンテナIDを印刷します
–dns=[] カスタムDNSサーバーを設定します
–dns-search=[] カスタムDNS検索ドメインを設定します
-e, –env=[] 環境変数を設定します
–entrypoint=”” イメージのデフォルトエントリポイントを上書きします
–env-file=[] ENV変数の行区切りファイルを読み込みます
–expose=[] コンテナからポートを公開しますが、ホストに公開しません
-h, –hostname=”” コンテナのホスト名
-i, –interactive=false アタッチされていなくてもstdinを開いたままにします
–link=[] 他のコンテナへのリンクを追加します(name:alias)
–lxc-conf=[] (lxc exec-driverのみ)カスタムlxcオプションを追加します –lxc-conf=”lxc.cgroup.cpuset.cpus = 0,1”
-m, –memory=”” メモリ制限(形式:
–name=”” コンテナに名前を付けます
–net=”bridge” コンテナのネットワークモードを設定します
‘bridge’:コンテナのために新しいネットワークスタックを作成します
‘none’:このコンテナにはネットワークがありません
‘container:
‘host’:コンテナ内でホストネットワークスタックを使用します
-p, –publish=[] コンテナのポートをホストに公開します
形式:ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort
(実際のマッピングを確認するには’docker port’を使用します)
-P, –publish-all=false すべての公開ポートをホストインターフェースに公開します
–privileged=false このコンテナに拡張権限を付与します
–rm=false 終了時にコンテナを自動的に削除します(-dとは互換性がありません)
–sig-proxy=true 受信したすべてのシグナルをプロセスにプロキシします(非ttyモードでも)
-t, –tty=false 擬似ttyを割り当てます
-u, –user=”” ユーザー名またはUID
-v, –volume=[] ボリュームをバインドマウントします(例:ホストから:-v /host:/container、dockerから:-v /container)
–volumes-from=[] 指定されたコンテナからボリュームをマウントします
-w, –workdir=”” コンテナ内の作業ディレクトリ
- save (イメージをtarアーカイブに保存します(デフォルトではstdoutにストリーミングされます))
docker save IMAGE- search (イメージのためにdockerインデックスを検索します)
docker search TERM- tag (イメージをリポジトリにタグ付けします)
docker tag [OPTIONS] IMAGE [REGISTRYHOST/][USERNAME/]NAME[:TAG]- top (コンテナの実行中のプロセスを調べます)
docker top CONTAINER [ps OPTIONS]- version (dockerのバージョン情報を表示します。)
sudo docker versionsrijan@vboxtest:~$ sudo docker version
[sudo] password for srijan:
Client version: 1.0.1
Client API version: 1.12
Go version (client): go1.2.1
Git commit (client): 990021a
Server version: 1.0.1
Server API version: 1.12
Go version (server): go1.2.1
Git commit (server): 990021a6 まとめ
Dockerにもっと親しんでもらうために努力しました。このガイドがDockerを理解し、テスト/本番環境でDockerを活用するのに役立つことを願っています。
詳細については、http://www.docker.com/ を参照してください。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。