2023年11月14日火曜日

docker のコンテナからホストのssh-agentを使う

docker を開発環境として使う場合、内部からsshにアクセスしたくなるが .ssh をbindマウントしたり、コピーしたりするのも面倒。 どうするのが正解なのかと思っていたら普通にホストのssh-agentを使う機能が用意されていた。すごいな。
version: '3'
services:
  ubuntu:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: ubuntu-test
    stdin_open: true # docker run -i
    tty: true        # docker run -t
    platform: linux/amd64 
    entrypoint: bin/bash
    volumes:
      - "/run/host-services/ssh-auth.sock:/tmp/ssh-agent.sock"
    environment:
      SSH_AUTH_SOCK: "/tmp/ssh-agent.sock"
最後のvolumeとenvironment がポイント。これはmacでのやり方なので、 linuxだとまた違うようだ。