こんにちは、なかにしです。
今回は、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 images
containerを作成
以下コマンドで、imageを基にしてbuildし、containerを作成する。
docker run <image名>
// docker run hello-image
containerが作成され、「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 // コンテナ名