

**Dockerfile**

[code]

    FROM centos
    
[/code]

**イメージ作成**

[code]

    % docker image build -f ./Dockerfile -t i_hoge01 .
    
[/code]

**Dockerコンテナ起動**

[code]

    % docker container run \
        -itd \
        --name c_hoge01 \
        -p 8081:80 \
        i_hoge01 /sbin/init
    
[/code]

**Docker内部へ入れることを確認**

[code]

    % docker container exec -it c_hoge01 /bin/bash
    
[/code]

**その後すぐDockerコンテナから出てコンテナの情報を確認**

[code]

    % docker container inspect c_hoge01 | grep IPAddress
    "SecondaryIPAddresses": null,
    "IPAddress": "172.17.0.2",
    "IPAddress": "172.17.0.2",
    
[/code]

IPアドレスがわかったのでpingを打ってみる

[code]

    % ping -c 5 172.17.0.2
    PING 172.17.0.2 (172.17.0.2): 56 data bytes
    Request timeout for icmp_seq 0
    Request timeout for icmp_seq 1
    Request timeout for icmp_seq 2
    Request timeout for icmp_seq 3
    
    --- 172.17.0.2 ping statistics ---
    5 packets transmitted, 0 packets received, 100.0% packet loss
    
[/code]

返ってきません。 コンテナがpingに反応しないようになっているのでしょうか？

## 背景

本当に知りたいことは上記 CentOS に httpd を入れて Apache を立ち上げたあとに `localhost:8081`
だとブラウザーにWebページが表示されたのですが、`172.17.0.2:8081` だと
ブラウザで表示されなかったためです(`curl`でも試しましたが同様に駄目でした）。

まず問題を切り分けるために、Dockerfileを1行だけにしたものでイメージを作り、そもそもpingでIPアドレスによるコンテナとの通信ができるのか確かめているところです。

（そもそもDockerのネットワークについての理解がまだ薄くホストとコンテナでIPアドレスで接続する方法どういったものなのかまだ把握していません）

この CentOS の上に環境を構築していってガッツリ使っていこうとは思っていません。単にDockerイメージの作成の練習中です。

## 追記

Macだとできないようです。

[macos - How could I ping my docker container from my host - Stack
Overflow](https://stackoverflow.com/questions/39216830/how-could-i-ping-my-
docker-container-from-my-host)

> [You can't ping or access a container interface directly with Docker for
> Mac.](https://github.com/moby/moby/issues/22753)

他にも [ホストからDockerコンテナにpingを通したい。 -
Tihiroのストレスフリーな生活](https://tihiro.hatenablog.com/entry/2020/04/17/130151)
が見つかりました。

> 結論: 無理
>
> 理由: Macの場合（というよりDocker for mac？）はホスト上にブリッジネットワークが作成されない仕様の模様。詳しくは

（なにやらネットには迂回策がたくさん掲載されていますが、そこまでして使いたい場面が今の私にはわかりませんでした）

これは ping だけが使えないのでしょうか？
それともIPアドレスそのもののアクセスがMacでは駄目なのでしょうか（おそらくIPアドレスでのアクセスがそもそも無理な気はしてますが...）？

ちょっと、[このスレッド](https://github.com/moby/moby/issues/22753)が長過ぎて要点がつかめません。

また

[Docker for Mac上のコンテナから、Mac上のアプリケーションに簡単に接続する方法 -
Qiita](https://qiita.com/Asayu123/items/ccfe4ccfc417ce57f445)

> Docker for
> Macでは、Dockerホスト上(mac)にdocker0ブリッジデバイスが生成されず、Dockerコンテナから通信するためのホストのIPアドレスが明示されません。

とありますが、docker0ブリッジデバイスがないからIPアドレスが使えないという理屈がわかりません。作られないのであれば、`docker network
create`で作れたりしないものなのでしょうか？ そもそもこの調子だと、Macで `docker network create` は機能するのでしょうか？

# 質問まとめ

  * MacではコンテナにIPアドレスでアクセスできないのか？
  * docker0ブリッジがないからアクセスできない理由はなぜか？ 
    * docker0ブリッジがないということは `docker network create` などのネットワーク機能はMacでちゃんと動くのか？


CC BY-SA 4.0
2020-08-16T09:20:15.043
69600
2020-08-16T12:08:19.207
2020-08-16T12:08:19.207
3060
9008
question
macos docker network
Dockerコンテナからpingが返ってこないがこれはpingだけの問題なのかIPアドレス自体使えないのかどちらですか？