docker config - taka512/memo GitHub Wiki
Dockerfile
1行につき1つの操作を{命令}と{引数}でスペース区切りで記述。「#」から始まる行はコメントとして処理。
# コメント
{命令} {引数}
命令一覧
命令 | 用途 |
---|---|
FROM | ベースイメージの指定 |
LABEL | ラベルを指定(作成者の情報など) |
RUN | イメージを作成するためのコマンド実行 |
CMD | コンテナでのコマンド実行 |
ENTRYPOINT | コンテナでのコマンド実行(run時に実行される) |
ONBUILD | ビルド完了後に実行される命令(ベースイメージとして利用) |
EXPOSE | ポートのエクスポート |
ENV | 環境変数の指定 |
ADD | ホスト(orリモート)のファイルディレクトリをコンテナ内に追加 |
COPY | ホストのファイルディレクトリをコンテナ内に追加 |
VOLUME | ホストのディレクトリをコンテナ内にマウント |
USER | Dockerfile内のコマンド実行ユーザの指定 |
WORKDIR | 作業ディレクトリの指定 |
ARG | Dockerfile内の変数を設定 |
STOPSIGNAL | コンテナ終了時に送信するシグナルの設定 |
HEALTHCHECK | コンテナ内のプロセスのヘルスチェック |
SHELL | デフォルトシェルの指定 |
実行例
# Dockerfileを作成
$ echo 'Hello!' > index.html
$ vi Dockerfile
FROM centos
MAINTAINER taka512 <[email protected]>
RUN yum install -y epel-release
RUN yum install -y nginx
ADD ./index.html /usr/share/nginx/html/
ENTRYPOINT /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
# Dockerfileを実行
$ sudo docker build -t taka/test1:1.0 .
# image作成確認
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
taka/test1 1.0 729d4c7d7ee0 About a minute ago 347.7 MB
# 起動
$ sudo docker run -d --name nginx3 -p 80:80 taka/test1:1.0
# 起動確認
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0e49edb9afd4 taka/test1:1.0 "/bin/sh -c '/usr/sb 7 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp nginx3
マルチステージビルド
生成過程のコンテナと実行環境をわけて実行環境のコンテナサイズを削減する
FROM golang AS builder
RUN xxxx
FROM xxxx
COPY --from=builder /xxx .
ENTRYPOINT ["./xxx"]
docker-compose
コマンド
docker-compose up コンテナ生成/起動
-d バックグラウンド実行
--build ビルド
docker-compose stop コンテナ停止
docker-compose ps コンテナの確認
docker-compose logs コンテナログ一覧
docker-compose run コンテナ実行
docker-compose start コンテナ起動
docker-compose stop コンテナ停止
docker-compose restart コンテナ再起動
docker-compose pause コンテナ中断
docker-compose unpause コンテナ再開
docker-compose port 公開ポートの表示
docker-compose config 構成の確認
docker-compose kill 実行中コンテナの強制停止
docker-compose rm コンテナ削除
docker-compose down リソースの削除
設定
設定例
version: 3.3
services:
web:
build: .
redis:
image: redis
tty: true # デーモン起動
項目
version docker engineのバージョンを指定する。(3.3ならdocker engineは17.xxみたいな事)
ports ホストとコンテナのポートのマッピング
expose ホストとコンテナのポートのマッピング(連携コンテナ内のみの設定)
depends_on サービス起動の依存設定
environment 環境変数指定
env_file 環境変数をファイルで指定
container_name コンテナ名設定
labels コンテナ情報の設定
volumes ホストディレクトリをコンテナにマウント
volumes_from volmes設定の継承