目次
Dockerの基本的な使い方と、主なコマンドを一覧にしています。
Dockerは以下の流れで使用します。
⓪アプリの作成 | (基本的にDockerfileはアプリのルートディレクトリに作成するため) |
↓ | |
①Dockerfile | Dockerイメージの設計図(OS、ライブラリの指定など) |
↓ | (コマンド:docker build)イメージのビルド |
②Dockerイメージ | 必要なファイル類を1まとめにしたもの(ソースコード、ライブラリなど) |
↓ | (コマンド:docker create)コンテナの作成 |
③Dockerコンテナ | 実際に動作する環境 |
↓ | (コマンド:docker start)コンテナの起動 |
④コンテナの起動 |
Dockerの状態確認 | sudo systemctl status docker |
Docker起動 | sudo systemctl start docker |
Docker停止 | sudo systemctl stop docker |
バージョン確認 | docker –version |
Docker環境の確認 | docker info |
Dockerfileの書き方に関する基本的なことをまとめています。
ファイル名 | Dockerfile ⇐拡張子なし |
ファイルの配置場所 | アプリのルートディレクトリ |
■FROM
ベースイメージの指定(OS、ライブラリなど)
※DockerHubno
イメージ一覧は以下
https://hub.docker.com/search?type=image
FROM <レジストリURL>/<名前空間>/<イメージ名>:<タグ>
例1)FROM docker.io/library/ubuntu:20.04
例2)FROM ubuntu:20.04
↑↑レジストリURL省略時はdocker.io(DockerHub)
■WORKDIR
ディレクトリ作成。
以降の処理のDockerコンテナ側のカレントディレクトリとなる。
WORKDIR [コンテナ内のパス]
例)WORKDIR /app
■COPY
ホスト側からコンテナへのファイル、ディレクトリのコピー
COPY [ホスト上のパス] [コンテナ内のパス]
例)COPY . ./
■RUN
コマンド実行(実行タイミング:イメージビルド時)
※イメージの中にその結果を残す(ファイルやライブラリを追加)
RUN [コマンド]
例)RUN apt update
例)RUN apt install -y vim
■CMD
コマンド実行(実行タイミング:コンテナ起動時)
※Dockerコンテナはメインプロセスが終了するとコンテナも終了する。
このコマンドでサーバー起動などして、メインプロセスを継続させる。
CMD [”コマンド”]
例)CMD [”npm”, “start”] ⇐nmp startを実行
■ARG
Dockerfile内で使用する変数の設定
例)ARG VERSION=latest ⇐代入
FROM busybox:$VERSION ⇐呼び出し
■ENV
環境変数の設定
ENV <key>=<value>
例)ENV myName="John Doe”
以下はReactでの例です。
■フォルダ構成
/myapp
- node_modules
- public
- src
- .gitignore
- Dockerfile ⇐アプリのルートに配置
- package.json
- package-lock.json
■Dockerfile記述内容
# ベースイメージ(OSなど含む)の指定
FROM node:18-alpine
# コンテナ内に作業ディレクトリ(app)を作成。
WORKDIR /app
# アプリをコピー(ソースコードをまるごとイメージに含める)
COPY . .
# 依存ライブラリをインストール
RUN npm install
# アプリが動作するポートを指定
EXPOSE 3000
# アプリを起動(npm startを実行)
CMD ["npm", "start"]
Dockerイメージ一覧 (ローカルのみ) | docker image ls |
イメージの詳細情報を確認 | docker image inspect [イメージ名] |
イメージのビルド履歴を確認 | docker image history [イメージ名] |
Dockerfileからイメージをビルド | docker image build -t [任意のイメージ名] [Dockerfileのパス] 例)docker image build -t sample . |
イメージを削除 | docker image rm [イメージ名] |
イメージのpull | docker image pull [イメージ名] |
イメージのpush | docker image push [イメージ名] |
コンテナ一覧(全て) | docker container ls -a |
コンテナ一覧(実行中のもののみ) | docker container ls |
イメージからコンテナ作成 | docker container create -p <ホストポート>:<コンテナポート> [イメージ名] 例)docker container create -p 3000:3000 sampleimage ※docker container run:作成、起動を一括で実行するコマンド |
コンテナを削除 | docker container rm [コンテナID] |
コンテナを起動 | docker container start [コンテナID] |
コンテナを停止 | docker container stop [コンテナID] |
コンテナのログを確認 | docker container logs [コンテナID] |
コンテナ内でコマンド実行 | docker container exec -it [コンテナID] [コマンド] 【補足】コンテナ内のCLIに接続しっぱなしにするなら以下 docker container exec -it [コンテナID] bash docker container exec -it [コンテナID] sh |
ボリューム一覧 | docker volume ls |
詳細情報の確認 | docker volume inspect [ボリューム名] |
ボリューム作成 | docker volume create [ボリューム名] |
ボリュームの削除 | docker volume rm [ボリューム名] |
ネットワーク一覧 | docker network ls |
詳細情報の確認 | docker network inspect [ネットワーク名] |
ネットワークの作成 | docker network create [ネットワーク名] |
ネットワークの削除 | docker network rm [ネットワーク名] |
コンテナをネットワークに入れる | docker network connect –ip [IPアドレス] [ネットワーク名] [コンテナ名] 例)docker network connect –ip 172.0.0.2 mynework mycontainer |
コンテナをネットワークから外す | docker network disconnect [ネットワーク名] [コンテナ名] |
バージョン確認 | docker compose version |
コンテナを作成 | docker compose create |
コンテナを削除 | docker compose rm |
コンテナを起動 | docker compose start |
コンテナを停止 | docker compose stop |
コンテナのログを確認 | docker compose logs |
https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/commandline/docker/