1
2

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 1 year has passed since last update.

コンテナ間通信をせずとも値の受け渡しができる?

Last updated at Posted at 2023-02-21

目次

  • 最初に
  • この記事をおすすめする人
  • きっかけ
  • 実装編
  • 同期のスピードはどれくらい?
  • 最後に

1. 最初に

コンテナ間通信で詰まった人、詰まっている人いませんか...?

コンテナ間の通信は様々なやり方があると思います。
私はコンテナ間のデータのやり取りで詰まって、困った際に閃いた案を記事に残そうと思いました。

2. この記事をおすすめする人

  • コンテナ間通信で詰まっている人
  • 出来るだけ早くコンテナ間でデータを共有したい人
  • コンテナのvolumesの使い方を学び直したい人

3. きっかけ

当方は、通信コンテナとwebコンテナを立ち上げ、通信コンテナが取得したデータをwebコンテナでweb上に表示するという実装を行なっておりました。
そこで、ソケット通信を試しましたが上手くいかず...
その時の構成図を以下に示します。

時間的制約があったので、違う方法を試しました。

共通ボリュームを両コンテナにマウントすることで、コンテナ間通信をせずに値の受け渡しを実現します。

パッて聞くと、当たり前じゃん、、、って思うと思いますが、実はやってる人そんなにいないんですよ...

以下にイメージ図を示します。

4. 実装編

構成図を以下に示します。(flaskのhtmlやcssは省略してます)

.
├── communication_containar
│   ├── Dockerfile
│   └── src
│       └── insert.py
|── web_containar
|   ├── Dockerfile
|   └── src
|        └── app.py
|
├── docker-compose.yml
|── text
    └── test.txt

docker-compose.ymlは簡単で、ただ共通のファイルをマウントするだけです。

docker-compose.yml
version: '3.8'

services:
  web:
    build: ./web
    volumes:
      - "dockertest/text:/home/text"
    tty: true

  havedate:
    build: ./web
    volumes:
      - "./text:/home/text"
    tty: true


5. 同期のスピードはどれくらい?

同じファイルをマウントして、同期遅かったら意味ないですよね...
いざ検証!

スクリーンショット 2023-02-21 23.20.27.png

  1. catでtest.txtの中身を見る → 中身はない
  2. ただtest.txtにhello worldを書き込むpythonファイルを実行する
  3. catでtest.txtの中身見る → 中身にhello worldが確認できる

これらを1秒以内にやりましたが、正しく同期されていました

6. 最後に

いかがでしたでしょうか?
あくまで、個人での開発で使うようにしましょうね...
今度はコンテナ間通信にリベンジします!!!!

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?