GithubHelp home page GithubHelp logo

Dockerについて about self-study HOT 5 OPEN

Yuya-Furusawa avatar Yuya-Furusawa commented on September 2, 2024
Dockerについて

from self-study.

Comments (5)

Yuya-Furusawa avatar Yuya-Furusawa commented on September 2, 2024

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.

Yuya-Furusawa avatar Yuya-Furusawa commented on September 2, 2024

Composeのネットワーク機能

例えばmyappディレクトリにあるdocker-compose.ymlがこんな感じになっていたとする

version: "3"
services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres
    ports:
      - "8001:5432"

docker-compose upを実行すると、次が起こる

  1. myapp_defaultというネットワークが作成される
  2. webの設定に従ってコンテナが作成され、ネットワークmyapp_defaultに参加する
    • コンテナ名を指定してないのでwebというコンテナ名になる
  3. dbの設定に従ってコンテナが作成され、ネットワークmyapp_defaultに参加する
    • コンテナ名を指定してないのでwebというコンテナ名になる

つまりDocker Composeを使えば、ネットワークが勝手に作成され、作成されたコンテナが同一ネットワークに追加される。

各コンテナのホスト名はそれぞれwebdbとなる。たとえば web のアプリケーション・コードでは、URL postgres://db:5432を使ってのアクセスが可能となり、Postgres データベースの利用ができるようになる。

ホスト名とdocker-compose.ymlで書いたサービス名は一致する。 ただし、ホスト名もオプションで指定することは可能。

参照

from self-study.

Yuya-Furusawa avatar Yuya-Furusawa commented on September 2, 2024

コンテナとイメージの削除

コンテナの削除

基本

docker rm [コンテナID]

まとめて削除

docker rm `docker ps -a -q`

イメージの削除

基本

docker rmi [イメージID]

まとめて削除

docker rmi `docker images -q`

from self-study.

Yuya-Furusawa avatar Yuya-Furusawa commented on September 2, 2024

ブラウザからはdockerコンテナのhostnameは認識できない

  • Docker Composeでコンテナを複数を立ち上げるとそれらのコンテナはデフォルトでbridgeネットワークで繋がれる
  • 各コンテナのhostnameはそのネットワーク内で参照可能
    • ネットワーク内で名前解決される
  • しかしブラウザはそのbridgeネットワーク上に存在しない(ブラウザはホストマシーン上に存在する)
  • したがってブラウザからアクセスするときはコンテナのhostnameは使わない

メモ-109

参照

from self-study.

Yuya-Furusawa avatar Yuya-Furusawa commented on September 2, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.