Help us understand the problem. What is going on with this article?

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

More than 3 years have 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などからダウンロードする

ktr17
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away