LoginSignup
8
5

More than 1 year has passed since last update.

MacOS Rancher Desktop が proxy環境で docker run hello-world できない人の Tips

Last updated at Posted at 2022-05-11

追記:minikubeを教えてくれた先輩がWindows版の記事を追加してくれました。Windowsでproxy環境の方はこちら

環境

  • Macbook Pro 2019 (Intel)
  • Mac OS Monterey

経緯(蛇足。読み飛ばしOK)

SAMのビルド用に業務でDockerを使用しています。

Docker Desktop有償化以降、先輩の記事を参考にminikubeを使ってきましたが、細かいところで使い勝手が気になってました。

  • 毎回起動時に minikube mount するのが煩わしい
  • ターミナルを開く度に eval $(minikube docker-env) するのが嫌
  • localhostでアクセスできない

などなど。

そんな中、SAMのissueに「Colima と Rancher Desktop で動くようにしたで」というコメントを発見。試してみました。

問題点

ざっと検索した感じでRancher Desktopがベタ褒めされてたのでインストールしてみましたが、どうも会社のproxyが邪魔してdockerが上手く動かない。

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.

環境変数にも ~/.docker/config.json にもプロキシ設定してみましたが変化なし。

override.yaml を作って環境変数渡せばいいよ 」って記事も見ましたが、nerdctl は上手くいっても docker コマンドだと上手くいかない。

解決策

結局、以下の手順が必要でした。

  1. ~/Library/Application Support/rancher-desktop/lima/_config/override.yaml を作成して、以下を記述する

    hostResolver:
      enabled: false
    dns:
    - <社内のDNSサーバー>
    env:
      http_proxy: http://<プロキシサーバー名>:<ポート番号>
      https_proxy: http://<プロキシサーバー名>:<ポート番号>
    
  2. limaにログインして、 /etc/init.d/docker に環境変数を指定

    1. limaにログイン

      LIMA_HOME="$HOME/Library/Application Support/rancher-desktop/lima" "/Applications/Rancher Desktop.app/Contents/Resources/resources/darwin/lima/bin/limactl" shell 0
      
    2. /etc/init.d/docker に環境変数の設定を追加

      ↓この2行を追加

      export http_proxy="<プロキシサーバー名>:<ポート番号>/"
      export https_proxy="<プロキシサーバー名>:<ポート番号>/"
      

      vi で編集

      sudo vi /etc/init.d/docker
      
      #!/sbin/openrc-run
      supervisor=supervise-daemon
      
      name="Docker Daemon"
      description="Persistent process that manages docker containers"
      description_reload="Reload configuration without exiting"
      
      # ↓ここに追加した
      export http_proxy="<プロキシサーバー名>:<ポート番号>/"
      export https_proxy="<プロキシサーバー名>:<ポート番号>/"
      
      command="${DOCKERD_BINARY:-/usr/bin/dockerd}"
      command_args="${DOCKER_OPTS}"
      
      以下省略
      
    3. サービス再起動

      $ sudo service docker restart
      * Caching service dependencies ...    [ ok ]
      * Stopping Docker Daemon ...          [ ok ]
      * Starting Docker Daemon ...          [ ok ]
      

さいごに

本当はproxyが無いのが一番好きです

参考記事

8
5
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
8
5