Open4

docker

katayama8000katayama8000

コマンド

docker run [イメージ名]

  • ローカルのイメージから、コンテナを立ち上げる
  • イメージがなければ、docker hub からとってくる

docker start [ID/コンテナ名]

docker stop [ID/コンテナ名]

docker build [Dockerfileのパス]

  • Dokcerfileからimageを作成

docker exec [コマンド指定] [コマンド]

  • centos のコンテナに入る
    • docker exec -it mycentos /bin/bash
    • コンテナ内に入って、centos の version を返す
    • cat /etc/redhat-release
  • コマンドを外から実行する
    • docker start xxxx
    • docker exec mycentos cat /etc/redhat-release
katayama8000katayama8000

ストレージ

コンテナにボリュームをマウント

  • docker run -v ホストのパス : コンテナのパス イメージ名
  • nginx の コンテナにホスト側の index.html をマウント
  • docker run -v /Users/t-katayama/desktop/test/:/usr/share/nginx/html --name mynginx -p 8080:80 nginx:1.16
  • パスは絶対パスである必要がある
katayama8000katayama8000

Dockerfile

  • Dockerイメージをコード化したもの

RUN

  • Dockerfileからイメージを作る時に実行されるコマンド

CMD

  • イメージをコンテナ化する時に実行されるコマンド
  • 書き方は色々あるが代表的なものを覚えておく
    • CMD ["aaa","bbb","ccc"]

サンプルコード

FROM ubuntu:20.04
RUN apt-get update -y && \
    apt-get install -y nginx
CMD [ "nginx","-g","daemon off;" ]
  • イメージ作成
    • docker build -t dockerfile-nginx .
  • コンテナ起動
    • docker run -d -p 8080:80 --name dockerfile-run-nginx dockerfile-nginx

ADD

  • ファイルにイメージを追加
  • ADDはネット経由でできる

COPY

  • ファイルにイメージを追加
  • 基本ローカルからの追加

サンプルコード

FROM ubuntu:20.04
RUN apt-get update -y && \
    apt-get install -y nginx
CMD [ "nginx","-g","daemon off;" ]
<h1>Hello from Docker</h1>

あとは同じ

ENV

  • ENV key = "val"
katayama8000katayama8000

docker compose

サンプルコード

version:"3"
services:
  web:
    build: ./php
 container_name: "php8"
 ports:
      "8080:80"
  db:
    image: mariadb: 10.4
 volume:
      ./data:/car/lib/mysql
  • version service は必須
  • service のしたは、コンテナ名を書く
  • image
    • 既存の image を指定
  • build
    • Dockerfile からイメージを作る
  • container_name
    • docker run --name と同じ
  • volume
    • docker run -v と同じ
    • コンテナとホストにディレクトリを共有
    • ホストのパス : コンテナのパス
  • ports
    • docker run -p と同じ
    • 外部公開ポート: コンテナ内ポート