Posted at

Dockerのコマンドとかについてちょっとだけ解説

More than 1 year has passed since last update.

Dockerで使うコマンドとかを備忘録的にまとめます


Dockerfileで使う命令


  • CMD


    • コンテナが起動するときに実行されるコマンドなど

    • shell形式(/bin/sh -c に渡される)とexec形式(JSONの配列)で記述できる



  • COPY


    • ファイルやディレクトリをコピーする



  • ENTRYPOINT


    • コンテナが起動するときに実行される実行ファイルを設定できる。



  • ENV


    • 環境変数を設定できる



  • EXPOSE


    • ポートを指定する(例 EXPOSE 80など)

    • 実際に使うときはdocker run -d -p 8000:80 {dockerイメージ名}など



  • FROM


    • ベースとなるイメージを選択する

    • Docker Hubにあるものや自作イメージなど



  • MAINTAINER


    • イメージの作成者などの情報を設定



  • ONBUILD


    • 本イメージが他のイメージのベースとして使われるときに、実行される命令などを指定する



  • RUN


    • buildをした時に実行するコマンドを設定

    • RUN apt-get updateなど



  • USER


    • ログインユーザを設定する

    • 事前にユーザを作成する必要がある



  • VOLUME


    • ファイルやディレクトリをボリュームとして設定する



  • WORKDIR


    • 作業ディレクトリを設定する




docker runのオプション

オプション
役割

-d
デタッチ(バックグラウンドで実行する)

-i
インタラクティブにコンテナとやり取りを行う

-t
TTYを割り当てる

--rm
dockerのプロセスが終了したときにコンテナも自動で削除する

-e
環境変数を設定する

-h
コンテナのホスト名を指定する

--name
{名前}をコンテナに割り当てる

-P
ホストのポートとコンテナのポートを自動的にマッピングする

-Pオプションの実行例

$: docker run -d -P test

09e0c70c761b906e4ef2f3a12bcbcd0c93dc75a26545c4780196cccb329ff216

$: ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09e0c70c761b test "uwsgi --http 0.0.0.0" 2 hours ago Up 6 seconds 0.0.0.0:32773->9090/tcp, 0.0.0.0:32772->9191/tcp infallible_volhard

コンテナで指定した9090番ポートと9191番ポートをホストの32773番ポートと32772番ポートへ自動的にマッピングする。

そのため、1つのホスト上で複数のコンテナを使うときには便利


その他のコマンド

docker create コンテナを作成するが、起動はしない

docker cp ファイルやディレクトリをホストとコンテナでやり取りする

docker killコンテナを終了させる

docker pauseコンテナをサスペンドする

docker restartコンテナを再起動する

docker rmコンテナを削除する

docker startコンテナを起動させる

docker stopコンテナを停止させる。削除はしない

docker port指定したポートのマッピングリストを表示する

docker ps起動しているコンテナを表示する(-a オプションで停止したコンテナも表示)

docker imagesローカルに取得しているイメージを表示する

docker rmiイメージを削除する

docker buildDockerfileに基いてイメージを作成する

docker pullイメージをDocker Hubなどからダウンロードする