Docker学習メモ

業務委託などで新しい環境を作る時、Docker使ってもっと簡単に環境構築ができたらなあという思いがあったので、避けていた(?)Dockerの学習をします。

学習方法はudemyの教材とDocker-docs-jaを使用しております。

Dockerコマンド

docker run
起動状態でdockerコンテナを作成する。
docer pull:イメージの取得
docker create:コンテナの作成
docker start;コンテナの起動
これらをまとめて行うコマンド
オプション
--rm : コンテナ終了時にコンテナ自動的に削除
-p: ポート開放を設定
-d: タッチド・モードとしてバックグラウンドでコンテナを実行する

docker images
ローカルのdockerイメージ一覧を表示するコマンド

docker tag
dockerイメージにタグ付を行う。
docker tag my-app my-app:1.2.3

docker inspect
イメージの詳細情報を表示するコマンド
docker inspect my_whalesay

docker rmi
ローカルのdockerイメージを削除するコマンド

docker ps
コンテナ一覧を表示。
-aオプションで停止中のコンテナも表示

Dockerfile

FROM
土台となるイメージを選択する。

RUN
apt-getなどのコマンドを実行する。

CMD
docker runコマンドの一部で指定できる。
docker run 時にコマンドの上書きが可能。

ENTRYPOINT
docker runコマンドの一部で指定できる。

1つのDockerfile にCMD、ENTRYPOINT は1度のみ。
※ 複数記載されている場合、最後の1個が実行される。

ENV
環境変数の設定。

ENV myName="John Doe" myDog=Rex\ The\ Dog \
myCat=fluffy

COPY
ファイルやディレクトリをコンテナにコピーする。

試しにDjangoやrailsの開発環境をdocker-composeコマンドで作ってみました。
DockerfileのCMDやENTRYPOINTは実際に手を動かしてみないと理解が進みませんでしたが、ようやく動きが分かるようになってきました。

ネットワークについて

Dockerコンテナのネットワークについて記事を読んでもどこで使うのかピンとこないなあと思っていたのですが、さくらの記事を読んで必要性が理解できました。
docker compose内でweb,db,appなどのサービスで構成した際、webコンテナからdbコンテナにアクセスできないように制限が必要になるため、ネットワークでアクセスを制御する、といった使い方をするんだなと。

ですが、まだ本番環境へのデプロイなどがよくわかっていないので、本を購入して知識の深掘りをたいなと思います。

この記事が気に入ったらサポートをしてみませんか?