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

docker Advent Calendar 2021

Day 24

Dockerコンテナ間で通信ができることをGitPod上でササっと確認する方法

Last updated at Posted at 2021-12-21

#きっかけ
Qiitaの「Docker の基本学習 ~ Docker のネットワーク」という記事で、dockerコンテナには仮想ネットワークカードとIPアドレスが付与され、お互いに通信できるということを知った。

早速試したい。でもこの前Linuxマシン片付けたばっかりだし、またLinux環境を準備するの面倒だなぁ、と思って思いついたのがGitpod上での動作確認である。
#やること概要
GitPod上でDockerをインストールし、その上に、お互いがpingで生存確認しあうだけのコンテナを立ち上げ、その結果をホストから確認する。
image.png
#手順
###(1) GitPodを立ち上げる。
いろいろと準備が面倒な方は以下をクリックしてみて欲しい。それだけで何にもインストールされていない素のUbuntu環境が立ち上がる。恐らく、最も高速なUbuntu環境立ち上げ手順であろう。
https://gitpod.io/#https://github.com/TakaoMori/TheSimplestGitpod
image.png
###(2) Docker versionを確認する。
Gitpodのシェル上で、以下のコマンドをタイプする。すると、GitpodのUbuntu環境には最初からDocker Engineがインストールされていることがわかる。
docker version
image.png

###(3) docker0のアドレスを確認する
実はこの「素のままのGitpod」には、ifconfigすらインストールされていない。そこで、sudo apt install net-toolsでインストールする。
image.png
その後、ifconfigによってdocker0のIPアドレスが172.20.0.1であることを確認できる。
image.png

###(4) 1台目のDockerコンテナを立ち上げる。
docker run -d ubuntu:14.04 /bin/sh -c "while true; do ping -b -c 1 -W 4 172.17.0.3; sleep 1; done"
シェルスクリプトを読める方は想像がつくと思うが、要は1秒ごとにpingを打つのをひたすら続けるコンテナである。

無事コンテナ起動後、docker psコマンドで立ち上がったコンテナ名がわかるので、そこでdocker logs <コンテナ名>とタイプして、pingのログを見てみる。すると、相手方の172.17.0.3君は立ち上がっていないので、pingはことごとく失敗しているはずである。
image.png

###(5) 2台目のDockerコンテナを立ち上げる。
docker run -d ubuntu:14.04 /bin/sh -c "while true; do ping -b -c 1 -W 4 172.17.0.2; sleep 1; done"
この状態で新たに立ち上がったコンテナのログを見ると、pingはことごとく成功しているはずである。
image.png
また、この状態であれば、最初に立ち上げたコンテナからのpingも成功するはずである。最初の図に示した状態が完成しているからである。
image.png

###(6) Gitpodのお掃除
これ以外と大事。終わったら、https://gitpod.io/workspaces にアクセスし、Workspaceを削除しておく。
image.png

3
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
3
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?