Dockerの基本的な使い方メモ
Dockerを触ることになったので、基本的な使い方をメモしておく。
用語
イメージ: コンテナのベースとなるファイル群
コンテナ: イメージから作成されたインスタンス
pullできるdockerのイメージはここから確認できる
https://hub.docker.com/explore/
基本的なコマンド
# イメージの取得 docker pull keymetrics/pm2 # イメージの確認 docker images # イメージからコンテナを作成 # 末尾のコマンドを指定すると起動時に実行される。 # 指定しないとDockerfileで指定したCMDが実行される。 docker run --name [コンテナ名] -d [イメージID] /sbin/init # コンテナにログイン(exitでログアウト) docker exec -it [コンテナ名] /bin/sh # コンテナの一覧 docker ps -a # コンテナを起動する docker start [コンテナ名] # コンテナを止める docker stop [コンテナ名] # コンテナを削除する(事前にstopしておく必要がある) docker rm [コンテナ名] # イメージの削除 docker rmi [イメージID] docker rmi -f [イメージID] # 強制削除
こちらで勉強させていただきました。
https://qiita.com/butada/items/3e6cd338cb703eef64b4
Dockerfile作る
↓みたいな感じでDockerfileを作る
FROM keymetrics/pm2:8-alpine # 使用するイメージ ARG app_dir=/usr/src/app # 変数の定義 WORKDIR ${app_dir} # 以下のコマンドをこのディレクトリで実行する ENV DEBIAN_FRONTEND noninteractive # 環境変数の設定 入力待ちでブロックしなくなる ENV TZ JST-9 # 環境の設定 タイムゾーンをJSTにする RUN apk add --update perl # perlのインストール(Alpine Linuxのコマンド) # COPYでローカルのファイルをコンテナへコピー # RUNでシェルを実行 COPY ./package.json . COPY ./yarn.lock . COPY ./tools ./tools COPY ./.npmrc . COPY ./public ./public COPY ./ecosystem.config.js ./ecosystem.config.js RUN touch ./public/healthCheck.html RUN yarn install --production --no-progress COPY build/public/assets/ public/assets COPY build/server.js . COPY build/assets.json . # 以降の実行をnodeユーザで行う # CMDはコンテナ実行時のコマンド。Dockerfileの中では1度だけ指定できる。ここではpm2を起動している。 USER node CMD [ "pm2-runtime", "start", "ecosystem.config.js", "--env", "production", "-i", "max"]
Dockerfileのあるディレクトリで実行することで、記載された内容に基づいてイメージを作る。
docker build .
他メモ
## --rmオプションつきで起動して終了するとコンテナ破棄する docker run --rm -t -i ubuntu /bin/bash # ポートフォワード # -pオプションで、外部からアクセスされるポート番号:コンテナ側のポート番号を指定 # -dオプションはバックグラウンドで実行 $ docker run --name some-nginx -d -p 8080:80 nginx