こんにちは、なかにしです。
今回は、dockerコマンド忘れがちな自分に、備忘録的に残します。
dockerfileのみ
流れは、dockerfile -> docker image -> docker container
image作成
build で image 作成ができる。
▼ 起動時に「Hello!!」とだけ出力するImage
FROM alpine:latest
CMD [ "echo", "Hello!!" ]dockerfileのある場所で、以下コマンドでImage作成
docker build .
// Imageに名前をつける場合は、-tを使用する。 
// ex) docker build -t hello-image .▼ Imageが作成される
▼ imageの一覧を確認するコマンド
docker imagescontainerを作成
以下コマンドで、imageを基にしてbuildし、containerを作成する。
docker run <image名>
// docker run hello-imagecontainerが作成され、「Hello!!」もコンソールに出力された。
コンテナ名は自動で割り振られる。
▼ コンテナ名を指定したい場合
docker run --name <指定するコンテナ名>  hello-imageこのコンテナを起動すると、毎回「Hello!!」が出力される。
▼ コンテナ起動コマンド
docker start <コンテナ名、コンテナID>
// docker start eager_sutherland▼ 起動の度に、コンソールに出力結果が増えていく
docker-compose使用
docker-composeを使用すると、複数コンテナ起動 & コンテナ作成までを簡略化できる。
Imageが作成済の場合
▼ yaml作成
version: '3'
services:
  app:
    image: hello-image
    ports:
      - "8080:80"以下コマンドでコンテナ作成ができる
docker-compose up
// バックグラウンド作成は docker-compose up -dコンテナが作成された
名前はデフォルトで割り振られる
「docker-practice」の部分は「プロジェクト名」と呼ばれ、デフォルトでカレントディレクトリの名前になる。
「app-1」の部分はコンテナ名で、で風呂とでservicesで指定した名前になる。
それぞれの名前を指定する場合は、以下
version: '3'
name: "sample-project" // プロジェクト名を指定
services:
  app:
    image: hello-image
    ports:
      - "8080:80"
    container_name: "Hello"  // コンテナ名を指定▼ 名前が指定された状態でコンテナが作成された
名前指定は、複数プロジェクトが動いている状況だと重複のリスクがあるので、メリデメを考慮する必要がある。
Imageが未作成の場合
Image作成 + buildを一気に行う。
dockerfileを作成し、それを指定する。
▼ dockerfile
FROM alpine:latest
CMD [ "echo", "Hello!!" ]▼ docker-compose.yml
version: '3'
services:
  app:
    build:
      dockerfile: ./dockerfile // dockerfileを指定
    ports:
      - "8080:80"もろもろの名前をつける場合は以下
version: '3'
name: sample-project  // プロジェクト名
services:
  app:
    build:
      dockerfile: ./dockerfile
    ports:
      - "8080:80"
    container_name: bbb  // コンテナ名