おすすめなDockerコマンドの一覧


 本ページでは、その中の「おすすめなDockerコマンドの一覧」を紹介させていただいてます。Dockerコマンド名部分のリンクをクリックしていただくと、そのコマンドの説明が表示されます。

実例と共に、より詳細なコマンド解説を、別記事「Dockerのコマンドの一覧(ver1.12対応版)(オリジナルな実例付き)」にも掲載させていただいております。よろしければご利用ください。

コマンド一覧

コマンド名 備考
docker cp  
docker rm   
docker rmi  
docker commit  
docker export  
docker import  

 

コマンド紹介

 

docker cp

フォーマット

docker cp [オプション] [コンテナID:<コピー元Path>] [コピー先Path]
docker cp [オプション] [コピー元Path] [コンテナID:<コピー先Path>] 
代表的なオプション
特記無し

使い方

 このコマンドは、Dockerコンテナ内のディレクトリやファイルをDockerホストにコピーする、またはその逆の、Dockerホスト内のディレクトリやファイルをDockerコンテナ内にコピーするためのコマンドです。

 ホスト型仮想環境の場合、仮想環境とはftpやsshで通信するのが普通だと思いますので問題ないと思いますが、Dockerの仮想環境の場合、基本的にDocker内には必要最低限のサービスしかインストールしません。なので、Dockerコンテナ内にはftpやssh関連のモジュールは無いと思って頂いた方が良いです。

 でも、Dockerコンテナとファイルやディレクトリのやりとりを行いたい時は良くあります。例えば、ミドルウエアの定義ファイルなどを、このコマンドを使ってDockerコンテナ内に送り込んだり、バックアップしたりする場合です。また、Dockerコンテナと機械的にファイルのやり取りを行いたい場合もあります。

 一例として、apacheの定義ファイルhttpd.confをこのコマンドで更新するときの使い方を示します。

 まず、Dockerコンテナ内のhttpd.confを入手します。Dockerコンテナ内の定義ファイルが

「/etc/httpd/conf/httpd.conf」にある場合の例です。

$ docker cp xxxxxxxxxxxx:/etc/httpd/conf/httpd.conf .
xxxxxxxxxxxxの部分は、DockerコンテナIDです。

 カレントディレクトリにhttpd.confがコピーされていると思います。そのファイルを更新した後、以下のコマンドでDockerコンテナ内の定義ファイルを置き換えます。

$ docker cp httpd.conf xxxxxxxxxxxx:/etc/httpd/conf/

 コピー先のファイルの存在確認は行われません。上書きされます。

 このコマンドを使う上で気を付けていただきたいのは、データボリューム以外の場所の更新ファイルは、Dockerコンテナが消えてしまうと元に戻ってしまうということです。Dockerコンテナに送り込むファイルは、Dockerホスト側で管理する必要があります。

 

コマンド一覧に戻る

docker rm

フォーマット

docker rm [オプション] [コンテナID若しくは名前] [コンテナID若しくは名前] ...
代表的なオプション
-v コンテナにマウントされているデータボリュームも削除する

使い方

 これは、Dockerコンテナを削除するためコマンドです。

 「docker run」コマンドにてDockerコンテナが起動すると、Dockerホストの/var/lib/dockerディレクトリ下に、Dockerコンテナ関連のファイルがコンテナ単位に作成されます。ホスト型仮想環境と較べた場合は問題にならないほどの容量ですが、塵も積もれば・・・、と言われるように、ほっとくとDockerのシステム領域を圧迫します。/var/lib/dockerを別パーティションにしていない場合は、Dockerホストのシステム領域を圧迫しかねません。

 不要になったDockerコンテナは、削除するように心掛けたほうが良いと思います。

 削除する前には、Dockerコンテナを停止させる必要があります。強制的に停止させて削除するオプション「-f」もありますが、通常運用では停止して削除を行った方が良いと思います。

 「-v」オプションを付けて実行すると、Dockerコンテナの削除時に、そのコンテナにアサインされていたデータボリュームも一緒に削除されます。不要になって完全に削除したいDockerコンテナの場合は、「-v」を付けて、データボリュームも一緒に削除しましょう。

 以下に使用例を示します。

 まずはDockerコンテナの起動確認です。

$ docker ps
CONTAINER ID   IMAGE    COMMAND  CREATED       STATUS     PORTS    NAMES
5df5572c95c0   centos   "init"   6 seconds ago Up 5 seconds        agitated_visvesvaraya

 停止させます。

$ docker stop 5df5572c95c0

 停止確認します。

$ docker ps -a
CONTAINER ID   IMAGE    COMMAND  CREATED       STATUS     PORTS    NAMES
5df5572c95c0   centos   "init"   5 minutes ago Exited (137) 4 seconds ago                                

 「Exited」になっているので停止されました。

 では削除します。

$ docker rm 5df5572c95c0

 これで「docker ps -a」を実行しても、先ほどのDockerコンテナは表示されなくなりました。

 コンテナID若しくは名前をスペース区切りで複数していして、コマンド1つで一度に削除することも可能です。

$ docker rm xxxxxxxxxx yyyyyyyyyy zzzzzzzzzz

コマンド一覧に戻る

docker rmi

フォーマット

docker rmi [オプション] [イメージ名もしくはイメージID] [イメージ名もしくはイメージID] ...
代表的なオプション
特記無し

使い方

 これは、Dockerホスト内のDockerイメージ置き場の中のイメージを削除するコマンドになります。不用になったDockerイメージは、削除しましょう。

 削除してしまっても、それがDockerHUBから入手したイメージの場合は、「docker run」時に自動的に入手するなど、いつでも入手可能です。

 自作イメージの場合はあきらめるしかないですが、Dockerfileがあれば再作成は可能ですね。

 以下に使い方を示します。

 まず、Ubuntuの最新Dockerイメージを入手します。

$ docker pull ubuntu

 存在確認です。

$ docker images
REPOSITORY  TAG    IMAGE ID     CREATED    SIZE
ubuntu      latest bd3d4369aebc 8 days ago 126.6 MB

 削除します。削除対象のDockerイメージの指定にイメージIDを使用する例です。イメージ名(リポジトリ名:タグ名)でも可能です。

$ docker rmi bd3d4369aebc

 再度存在確認です。

$ docker images
REPOSITORY  TAG    IMAGE ID     CREATED    SIZE

 消えたことが確認できました。

 イメージID若しくはイメージ名をスペース区切りで複数指定して、コマンド1つで一度に削除することも可能です。

$ docker rmi xxxxxxxxxx yyyyyyyyyy zzzzzzzzzz

コマンド一覧に戻る

docker commit

フォーマット

docker commit [オプション] [コンテナ名] [イメージ名]
代表的なオプション
特記無し

使い方

 これは、現時点のDockerコンテナの状態を基にDockerイメージを作成するコマンドになります。

 Dockerコンテナは、コンテナレイヤと呼ばれる更新可能な情報を保持しています。コンテナレイヤには、現時点までに、起動時に指定したDockerイメージ内のリソースに対して行った更新要求情報が記録されてます。

 このコマンドにより、コンテナレイヤの情報を、起動時に指定したDockerイメージに追加し、新たなDockerイメージを作成することが可能です。

 つまり、素のubuntuイメージを起動して、その中にapacheをインストールして、このコマンドでDockerイメージを作成すると、自作のapacheイメージが出来上がるわけです。

 以下に、UbuntuのDockerイメージにapacheをインストールして、新たなDockerイメージを作る例を示します。

 まず、ubuntuを入手します。

$ docker pull ubuntu

 UbuntuのDockerイメージを基にDockerコンテナを起動します。

$ docker run -d ubuntu init

 起動したDockerコンテナ内でシェルbashを起動します。

$ docker exec -it xxxxxxxxxxxx bash

xxxxxxxxxxxxは起動したDockerコンテナのコンテナIDです。IDは「docker ps」で確認できます。

 Dockerコンテナ内で、apacheをインストールします。

# apt-get update; apt-get install apache2

 インストールされたか確認します。

# dpkg -l | grep -i apache

 「exit」でDockerホストに戻り、「docker commit」コマンドで新たなDockerイメージを作成します。

$ docker commit xxxxxxxxxxxx myapache

 新イメージ名は「myapache」と付けました。Dockerイメージが作成されているか確認します。

$ docker images | grep myapache

 作成したDockerイメージを基にDockerコンテナを起動します。

$ docker run -d myapache init

 起動したDockerコンテナ内でシェルbashを起動します。

$ docker exec -it yyyyyyyyyyyy bash

yyyyyyyyyyyyは新しく作成したDockerイメージを基に起動したDockerコンテナのコンテナIDです。

 apacheがインストールされているか確認します。

# dpkg -l | grep -i apache

 apacheがインストールされていることが確認できると思います。

 1点注意していただきたいことがあります。

 このコマンドで作成される新イメージに含まれるファイルは、データボリューム下のファイルは含まれません。

 例えば、「docker run」コマンドの「-v」オプションで/dataディレクトリをデータボリュームとして指定したDockerコンテナに「docker commit」コマンドを使用した場合は、新イメージの中に/data以下の更新ファイルは含まれません。

 

コマンド一覧に戻る

docker export

フォーマット

docker export [オプション]
代表的なオプション
-o 出力先ファイル名を指定する

使い方

 これは、現時点のDockerコンテナの状態をtarアーカイブとして出力するコマンドになります。

 「docker commit」コマンドが、Dockerコンテナの内容をDockerイメージとして出力するのに対して、こちらはtar形式で出力します。

 tar形式で出力したアーカイブは、「docker import」コマンドにてDockerイメージ化することが出来ます。

 以下に例を示します。

 まず、CentOSのDockerコンテナを起動します。

$ docker run -d centos init

 確認のため、作成したコンテナ内にファイルを作成しておきます。

$ docker exec xxxxxxxxxxxx touch /abcdefg.txt
$ docker exec xxxxxxxxxxxx ls -l /

xxxxxxxxxxは起動したDockerコンテナのIDです。

 「docker export」コマンドにて、Dockerコンテナの内容をtarファイルに出力します。

$ docker export -o export-test.tar xxxxxxxxxx 

 

 出力されたtarファイルには、Dockerコンテナの中身の全ファイルが格納されてます。

$ tar tvf export-test.tar | grep abcdefg.txt

tarファイル内に先ほど作成したファイルが存在していることが確認できたと思います。

コマンド一覧に戻る

docker import

フォーマット

docker import [オプション] [インポートファイル名] [イメージ名]
代表的なオプション
特記無し
インポートファイルの形式は、tar,tar.gz,tgz,bzip,tar.xz,txz,-
-を指定した場合は、標準入力から取り込まれる

使い方

 これは、「docker export」コマンドで出力したアーカイブファイルを使って、Dockerイメージを作成するコマンドです。ファイルファイルを指定するのではなく、標準入力からの入力もサポートされてます。

 以下に例を示します。

 まず、CentOSのDockerコンテナを起動します。

$ docker run -d centos init

 確認のため、作成したコンテナ内にファイルを作成しておきます。

$ docker exec xxxxxxxxxxxx touch /abcdefg.txt
$ docker exec xxxxxxxxxxxx ls -l /

xxxxxxxxxxは起動したDockerコンテナのIDです。

 「docker export」コマンドにて、Dockerコンテナの内容をtarファイルに出力します。

$ docker export -o export-test.tar xxxxxxxxxx 

 export-test.tarの中身を使ってDockerイメージmyimageを作成します。

$ docker import export-test.tar myimage

 このDockerイメージを基にDockerコンテナを起動します。

$ docker run -d myimage init

 先ほど作成したファイルabcdefg.txtが存在するか確認します。

$ docker exec xxxxxxxxxx ls -l /

xxxxxxxxxxは起動したDockerコンテナのIDです。そのコンテナ内で「ls -l /」を実行し、結果が出力されます。

 abcdefg.txtファイルが存在していることが確認できたと思います。

 

 標準入力からの入力にてDockerイメージを作成する例も示しておきます。

$ cat export.tar | docker import - myimage2

 

コマンド一覧に戻る

 


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください