Dockerの名前解決

最終手段はimageの全削除か。。。 

docker rmi -f imagename

docker image prune

Dockerの名前解決

こんなエラーがdockerから出る

Cannot stop Docker Compose application. Reason: Command failed: docker-compose --project-directory "/Users/y_ono/uims/uims-test" stop The Compose file './docker-compose.yml' is invalid because: services.cucumber.build.args contains ["test:127.2.3.4"], which is an invalid type, it should be a string, number, or a null


これはdocker-compose.ymlのホストとコンテナの名前解決を図るために

docker-compose.ymlに

ext_host

と/private/etc/hosts

127.2.3.4 test

をうめこみ。

参考

  • コンテナ内の /etc/hosts のみがコンテナ内での名前解決に影響する
    • コンテナの外(ホスト)の /etc/hosts は無関係
  • curl や ping は /etc/hosts の設定が反映されるが、 nslookup や dig は /etc/hosts を見ない
  • コンテナ内の /etc/hosts への設定は docker の機能で可能
    • docker-compose の extra_hosts 設定
    • docker の --add-host パラメータ

host.docker.internal というDNS名が用意されているので、それを利用すればよさそうです。
ドキュメントによるとMac/Windowsで利用できそうです。

Networking features in Docker Desktop for Windows | Docker Documentation
https://docs.docker.com/docker-for-windows/networking/

The host has a changing IP address (or none if you have no network access). From 18.03 onwards our recommendation is to connect to the special DNS name host.docker.internal, which resolves to the internal IP address used by the host. This is for development purpose and will not work in a production environment outside of Docker Desktop for Windows.

(Google翻訳)ホストのIPアドレスは変更されています(ネットワークアクセスがない場合はなし)。18.03以降では、ホストが使用する内部IPアドレスに解決される特別なDNS名host.docker.internalに接続することをお勧めします。 開発目的のためであり、Docker Desktop for Windows以外の実稼働環境では機能しません。

Networking features in Docker Desktop for Mac | Docker Documentation
https://docs.docker.com/docker-for-mac/networking/

The host has a changing IP address (or none if you have no network access). From 18.03 onwards our recommendation is to connect to the special DNS name host.docker.internal, which resolves to the internal IP address used by the host. This is for development purpose and will not work in a production environment outside of Docker Desktop for Mac.

(Google翻訳)ホストのIPアドレスは変更されています(ネットワークアクセスがない場合はなし)。 18.03以降では、ホストが使用する内部IPアドレスに解決される特別なDNS名host.docker.internalに接続することをお勧めします。 これは開発用であり、Docker Desktop for Mac以外の運用環境では動作しません。


https://qiita.com/tksugimoto/items/804e0051bf1b1ddab168

https://qiita.com/kai_kou/items/5182965ea75c85cf1e3f

https://github.com/docker/for-win/issues/2402

https://docs.docker.com/docker-for-mac/networking/

https://dev.to/natterstefan/docker-tip-how-to-get-host-s-ip-address-inside-a-docker-container-5anh

https://qiita.com/jagaximo/items/6b71a03518bbd53d4de6 

^^^^^^^^

disable-dev-shmについて

~~

--shm-size=128m

解決策はまったく同じでしたが(RAMを増やす)、結果はまだ満足のいくものではありませんでした。

~~
古い質問ですが、同様の問題が私を狂気に駆り立てたので、私の解決策を共有しました:

DockerイメージのChromeインストールを古いバージョンからChrome86に更新すると、このエラーが発生しました。私のセットアップは同じではありませんでしたが、SeleniumWebドライバーを介してChromeをインスタンス化していました。

解決策は、オプションをchromeOptionsハッシュではなくgoog:chromeOptionsハッシュとして渡すことでした。これがSelenium、Chrome、Chromedriver、またはその他のアップデートであるかどうかは本当にわかりませんが、将来、この回答に慰めが見つかるかもしれません。

 Chromedriverの変更...link

~~

Dockerコンテナの/ dev / shmのサイズを増やす方法

docker-compose.yml
shm_size : 256m

今んとこに種類
1...shm-size: docker-composeでのメモリ拡張
2...chromeoptionsのハッシュ...env.rbでのchromeオプションの渡し方のフォーマット変更
[2020.10.13のstack overflow]
caps = Selenium::WebDriver::Remote::Capabilities.chrome(
    "goog:chromeOptions" => {"args" => [ "window-size=1000,800" ]})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps
~~
・菊本さんのuims-testをpullして使ってる。

質問項目:
  1. ローカルでの実行とjenkins実行では、エラー数が違う、ということで良い?
  2. で、jenkinsではsession id clashの事象である、と。
~~~
System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized"); // open Browser in maximized mode
options.addArguments("disable-infobars"); // disabling infobars
options.addArguments("--disable-extensions"); // disabling extensions
options.addArguments("--disable-gpu"); // applicable to windows os only
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("--no-sandbox"); // Bypass OS security model
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");

same here, after every update they want us to suffer, to find a pass to buddhism

~~

Next Post Previous Post
No Comment
Add Comment
comment url