3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

dockerメモ

3
Posted at

dockerfile

FROM

Dockerイメージを指定する。
FROMで取得するイメージはDockerHubに公開されているものになる。

FROM
FROM イメージ名:タグ
# タグは「3.6」等のバージョン名が一般的

RUN

Dockerイメージビルド時に、コンテナ内で実行するコマンドを定義する。

RUN
RUN mkdir /tmp
RUN mkdir /test
# /tmpと/testというディレクトリをビルド時にコンテナ内に作成する
# 以下でも結果同じになる
RUN mkdir /tmp \
    && mkdir /test

COPY

Dockerを動作させているホストマシンのファイルやディレクトリをコンテナにコピーする。

COPY
COPY test.py /test
# ホストにあるtest.pyをコンテナの/testにコピー

CMD

コンテナ起動時に実行されるプロセスを指定する。

CMD
CMD ["実行ファイル", "引数1", "引数2", ...]
# 空白が入る部分でコマンドを区切り、配列化した形にするのが推奨

docker container runの指定の方が優先される。

ENV

コンテナ内で使用する環境変数を指定する。

ENV
ENV test="envtest"

ARG

イメージをビルドする時のみ使用する一時的な環境変数。

ARG
ARG argtest
# dockerfile内では上記のように記載
# イメージビルドするときに以下のように実行
docker image build --build-arg argtest=test -t イメージ名 .

VOLUME

コンテナ内のデータを永続化する時に指定。
指定したコンテナディレクトリをホストのディレクトリにマウントする。
DB等のDataVolumeコンテナとして使用する時等に使う。
その際のイメージはbusyboxが一般的。(軽量のため)

ホストのどこにマウントされているかは、docker inspect {コンテナID}で確認できる。
「"Mounts": [{"Source":」の部分


"Source": "/var/lib/docker/volumes/a033974964bb2412ba7e8a7fe89d5ac2dce8b121a885121e3c95d37262eb111e/_data"

VOLUME
VOLUME /var/lib/mysql

dockerコマンド

似たようなコマンドが結構あったりするが、比較情報については以下記事参照。
https://qiita.com/zembutsu/items/6e1ad18f0d548ce6c266#%E6%A6%82%E8%A6%81

docker image

docker image build(docker build)

imagebuild
docker image build -t イメージ名[:タグ名] Dockerfile配置ディレクトリパス
# カレントディレクトリがDockerfileある場所ならばディレクトリパスは「.」でよい
# -f ファイル名 : Dockerfile名を指定。デフォルトはDockerfileという名前のファイルを探す
# --pull : --pull=trueとすることで、キャッシュを使わずイメージを強制的に再取得する

docker image ls(docker images)

作成したイメージの一覧を表示する。

docker image pull(docker pull)

DockerHubに存在するリポジトリとタグを指定する。
タグを省略した場合はデフォルトタグ(大体latest)が利用される。

imagepull
docker image pull [options] リポジトリ名[:タグ名]

docker image tag

Dockerイメージのバージョン(イメージID)にタグ付けをする。
1つのタグに紐付けられるイメージは1つ。同一リポジトリ、同一タグのイメージは最新以外はNoneになる。

imagetag
docker image tag 元イメージ名[:タグ] 新イメージ名[:タグ]

docker image push

Dockerレジストリにイメージをpushする。
先にdocker loginしておく前提。

imagepush
docker image push [options] リポジトリ名[:タグ]

docker image prune

実行中コンテナのイメージでないイメージを一括で削除する

imageprune
docker image prune [options]

docker container

docker container run(docker run)

containerrun
docker container run イメージ名[:タグ名] [コマンド] [コマンド引数・・・]
# -d : バックグラウンド実行オプション
# -it : コンテナ側の標準入力をつなぎっぱなしにする
# --rm : コンテナ終了時にコンテナを削除する
# -p : ポートフォワーディング。指定したホスト側ポートを指定したコンテナポートにフォワーディングする {ホスト側ポート}:{コンテナポート}
      ホスト側のポートは記載省略できる。ホストのどのポートが割り当てられたかはdocker container lsで確認できる。
# --name [コンテナ名] : コンテナ名称を指定
# --volumes-from [コンテナ名] : DataVolumeコンテナをマウントする。マウントはDataVolumeコンテナの設定通り。

docker container ls(docker ps)

実行コンテナ一覧を表示する。

containerls
docker container ls [options] 
# -a : 停止しているコンテナも含めて表示する
# -q : コンテナIDだけを抽出する
# --filter "filter名=値" : 条件に当てはまるコンテナだけを抽出
                docker container ls --fileter "name=test" #コンテナ名でフィルタ
                docker container ls --fileter "ancestor=test" #イメージでフィルタ
# --limit 件数 : 表示件数を制限する

docker container stop

実行しているコンテナを停止する

containerstop
docker container stop コンテナID(省略可)もしくはコンテナ名

docker container restart

コンテナを再起動する。
動き的にはstop→start。元々stopしているコンテナにも使える。

containerrestart
docker container restart コンテナID(省略可)もしくはコンテナ名

docker container rm(docker rm)

コンテナをディスクから削除する。

containerrm
docker container rm コンテナID(省略可)もしくはコンテナ名
# -f : 実行中のコンテナを停止、削除

docker container logs(docker logs)

コンテナの標準出力を表示する。
一般的にDockerコンテナにおけるログは、コンテナに標準出力として出されるものを指す。

containerlogs
docker container logs [options] コンテナID(省略可)もしくはコンテナ名
# -f : 標準出力をリアルタイムで出し続ける(tail -f のイメージ)

docker container exec(docker exec)

実行中のコンテナの中で任意のコマンドを実行できる。

containerexec
docker container exec [options] コンテナID(省略可)もしくはコンテナ名 コンテナ内で実行するコマンド
# docker container exec -it コンテナID /bin/bashでコンテナ内を操作することが多い

docker container cp(docker cp)

実行中のコンテナとホスト間でファイルをコピーできる。

containercp
docker container cp [options] コンテナIDもしくはコンテナ名:コンテナ内のコピー元 ホストのコピー先
docker container cp [options] ホストのコピー元 コンテナIDもしくはコンテナ名:コンテナ内のコピー先

docker container prune

実行していないコンテナを一括で削除する。

containerprune
docker container prune [options]

docker container stats

コンテナタインにのシステムリソースの利用状況を表示する。
(topコマンドのdocker版)

containerstats
docker container stats [options] [表示するコンテナID]

docker search

Docker Hubレジストリに登録されているリポジトリを検索する。

search
docker search [options] 検索キーワード
# --limit 件数 : 表示件数を制限する

docker system

docker system prune

利用していないコンテナ、イメージ、ボリューム等のリソースを一括で削除する

systemuprune
docker system prune [options]

docker-compose

複数のコンテナ構成を管理するツール。

docker-compose.yml

コンテナの構成を記載するファイル。
サービス(services)、ネットワーク(networks)、ボリューム(volumes)を定義する。

services

container_name

コンテナ名を指定する

image

dockerイメージを指定する

ports

公開するポートを指定する
ホスト:コンテナでの指定やコンテナのみの指定(ホスト側はランダムになる)もできる

ports:
 - 3000
 - 5000:5000

volumes

ホストのディレクトリをマウントする

volumes:
  - /opt/data:/var/lib/mysql

privileged

コンテナに権限を与える時に付与する。

privileged: true

tty

コンテナを終了させずに起動させ続ける。

tty: true

depends_on

コンテナの依存関係を指定する。
指定したサービスが先に起動される。

depends_on:
  - manager

expose

docker-compose内でだけ開放されるポートを指定する。

expose:
  - 3375

docker-compose up

docker-compose.ymlを作成したディレクトリで実行し、yamlファイルに従ったコンテナ群を起動する。

docker-compose.ymlのあるディレクトリで実行する。

up
docker-compose up [options]
# -d : バックグラウンドで実行する
# --build : upの際に必ずDockerイメージのビルドをさせる

docker-compose down

docker-compose.ymlを作成したディレクトリで実行し、yamlファイルに従ったコンテナ群をすべて停止、削除する。
docker-compose.ymlのあるディレクトリで実行する。

down
docker-compose down

docker swarm

複数のDockerホストをクラスタ化するツール。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?