0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Dockerについて

Last updated at Posted at 2020-05-30

#前提
Dockerについて学んだことを書いていきます。

#本題

#基本コマンド
docker image build -t
Dockerfileの情報を元にコンテナのイメージをbuildする。

Build

指定したディレクトリに存在するDockerfileを読み込みコンテナイメージをbuildする。

buildしたコンテナイメージは実行したマシンに保存される。
保存する時の名前を-tのタグでつける。

ローカルに保存されているDockerコンテナの内容表示
docker image ls

docker run -d -p 8080:80 dockerdemo:latest
-d デタッチ(コンテナをバックグランドで起動する)
-p パブリッシュ(ポートを指定、左側がホストからの接続ポート・右側がコンテナ側への接続ポート)
ホストへは8080のポートで接続するが、実際には80ポートに変換されるイメージ。

実行中のコンテナの出力
docker container ls

コンテナの停止
docker container stop コンテナID

#コンテナのネットワークとは

サーバにはLANポートがある。
物理的にLANケーブルを接続するNICがいくつかある。
EC2などの仮想サーバも同様。
EC2はこのようなNICが仮想化されているだけで仕組みは物理サーバと同様。
Eth0にきた通信はKernelで制御される。
リナックスだとiptablesなどで通信の制御をしたりすることがある。
Dockerはこのようなカーネルレベルでもいい感じに動作し、コンテナと外部通信の橋渡しをしてくれる。

Eth0のような物理的なレイヤーを通過

Dockerネットワークのレイヤーに到着

Dockerデーモンが物理レイヤーとDockerレイヤーのネットワークを接続する

コンテナはDockerデーモンを通じて外部のネットワークと通信している
↓Dockerレイヤーの中身
もっともよく使われているシンプルなネットワーキングBridge

Bridgeという仮想的なネットワークの接続ポイントを使用した方法

コンテナを3つ立ち上げた場合

vethをかいして、それぞれのコンテナはBridgeに接続している

Bridgeはネットワーク機器でいうとスイッチのような役割で、Bridge自体は独立したネットワーク領域

Bridgeに応じたIPアドレスがコンテナに割り当てられる

Bridgeは複数作成することができる

docker network ls
現在のDockerネットワークの情報を表示する。

docker network inspect bridge
ネットワークアドレスが何になるか確認。

Bridge作成
docker network create --attachable -d bridge --subnet=10.99.0.0/16 greenbridge

#コンテナのボリュームとは
デフォルトでは、コンテナの内部で生成されたデータはコンテナの内部に保存される。
→コンテナを削除してしまうと綺麗さっぱり消えてしまう。
コンテナは不変かつ一時的な実行プロセスという特徴の一つであり、諸刃の剣。
データベース系のコンテナはずっと消えることのないデータを必要としている。

コンテナの中にカスタマイズしたデータを保存しないようにする。

Dockerのmountを使用することでコンテナとホスト、両方ファイルを共有することができる。

ファイルを共有する領域がDockerの管理下にあるか、ホスト側の管理下にあるかの違い。

Volumes
コンテナとDockerエリアと連携する方法

Bind mount
任意のファイルシステムの領域とコンテナがファイルを共有できる

Dockerの管理下Volumesのmount方法
Dockerfileの編集
VOLUME /var/www/html
VOLUMEはコンテナ側のマウントポイントを指定する

Bind mountでファイル共有方法
docker container run --name bindmount1 -d -p 80:80 -v /root/bindmount:/var/www/html volumdemo:latest

-v
左側にホストでマウントさせたいディレクトリを指定する。
:を挟んで右側のコンテナ側のマウントさせたい領域

docker container run --name bindmount1 -d -p 80:80 -v ${pwd}:/var/www/html volumdemo:latest

${pwd}で現在いるディレクトリを自動的に置き換わる。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?