Comments (5)
Dockerネットワークの理解
デフォルトネットワーク
Dockerをインストールすると自動的に3つのネットワークが作成される。
$ docker network ls
NETWORK ID NAME DRIVER
7fca4eb8c647 bridge bridge
9f904ee27bf5 none null
cf03ee007fb4 host host
デフォルトでdocker0
というブリッジネットワークが作成される。
docker run
するとこのネットワークでコンテナが作成される。
ユーザー定義ネットワーク
自分で新しいネットワークを作成することができる。
- ブリッジネットワーク
- 基本的なネットワーク
- 同一ネットワーク内のコンテナは互いに通信可能
- オーバレイネットワーク
- リモートネットワーク
参照
from self-study.
Composeのネットワーク機能
例えばmyapp
ディレクトリにあるdocker-compose.yml
がこんな感じになっていたとする
version: "3"
services:
web:
build: .
ports:
- "8000:8000"
db:
image: postgres
ports:
- "8001:5432"
docker-compose up
を実行すると、次が起こる
myapp_default
というネットワークが作成されるweb
の設定に従ってコンテナが作成され、ネットワークmyapp_default
に参加する- コンテナ名を指定してないので
web
というコンテナ名になる
- コンテナ名を指定してないので
db
の設定に従ってコンテナが作成され、ネットワークmyapp_default
に参加する- コンテナ名を指定してないので
web
というコンテナ名になる
- コンテナ名を指定してないので
つまりDocker Composeを使えば、ネットワークが勝手に作成され、作成されたコンテナが同一ネットワークに追加される。
各コンテナのホスト名はそれぞれweb
・db
となる。たとえば web のアプリケーション・コードでは、URL postgres://db:5432
を使ってのアクセスが可能となり、Postgres データベースの利用ができるようになる。
ホスト名とdocker-compose.ymlで書いたサービス名は一致する。 ただし、ホスト名もオプションで指定することは可能。
参照
from self-study.
コンテナとイメージの削除
コンテナの削除
基本
docker rm [コンテナID]
まとめて削除
docker rm `docker ps -a -q`
イメージの削除
基本
docker rmi [イメージID]
まとめて削除
docker rmi `docker images -q`
from self-study.
ブラウザからはdockerコンテナのhostnameは認識できない
- Docker Composeでコンテナを複数を立ち上げるとそれらのコンテナはデフォルトでbridgeネットワークで繋がれる
- 各コンテナのhostnameはそのネットワーク内で参照可能
- ネットワーク内で名前解決される
- しかしブラウザはそのbridgeネットワーク上に存在しない(ブラウザはホストマシーン上に存在する)
- したがってブラウザからアクセスするときはコンテナのhostnameは使わない
参照
from self-study.
DockerfileでのRUN
, CMD
, ENTRYPOINT
RUN | コマンド実行
- 各コマンドごとにレイヤーが作成される
- レイヤーの数には上限があるため、まとめて実行するのが良い
RUN chown -R mysql:root /var/lib/mysql/
CMD | コンテナ実行時の実行コマンド
- Dockerfileで一度だけ指定可能
docker run
時に実行されるコマンドを指定docker run
時にコマンドを指定した場合、指定したコマンドが実行される(このコマンドは実行されない)
CMD ["node", "start"]
ENTRYPOINT | コマンド実行時の実行コマンド
- Dockerfileで一度だけ指定可能
docker run
時に実行されるコマンドを指定docker run
時にコマンドを指定した場合でも、このコマンドが実行される
ENTRYPOINT ["node", "start"]
参照
from self-study.
Related Issues (11)
- React + TypeScript開発で調べたことのまとめ HOT 28
- 開発の進め方に関する学習 HOT 3
- JavaScriptに関して調べたことのまとめ HOT 16
- PATHのお話 HOT 2
- いろいろな概念・用語 HOT 4
- CSSとか、CSS in JSとか HOT 14
- Node.jsについて HOT 3
- Terraformについて HOT 4
- AWSとか HOT 3
- GitHub Actionsについて
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from self-study.