【问题标题】:How to make DOCKER_HOST read ~/.ssh/config?如何让 DOCKER_HOST 读取 ~/.ssh/config?
【发布时间】:2021-11-01 23:08:59
【问题描述】:

我有~/.ssh/config,内容如下

Host hostname
    HostName [REDACTED]
    User ubuntu
    IdentityFile ~/.ssh/google_compute_engine

我可以在终端中使用 with no problem

连接这个主机
ssh hostname

不幸的是,paramiko 似乎无法读取 ~/.ssh/config

DOCKER_HOST="ssh://hostname" docker-compose up -d                 

Traceback (most recent call last):
  File "/usr/bin/docker-compose", line 11, in <module>
    load_entry_point('docker-compose==1.25.0', 'console_scripts', 'docker-compose')()
  File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 72, in main
    command()
  File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 125, in perform_command
    project = project_from_options('.', options)
  File "/usr/lib/python3/dist-packages/compose/cli/command.py", line 53, in project_from_options
    return get_project(
  File "/usr/lib/python3/dist-packages/compose/cli/command.py", line 145, in get_project
    client = get_client(
  File "/usr/lib/python3/dist-packages/compose/cli/command.py", line 116, in get_client
    client = docker_client(
  File "/usr/lib/python3/dist-packages/compose/cli/docker_client.py", line 127, in docker_client
    client = APIClient(**kwargs)
  File "/usr/lib/python3/dist-packages/docker/api/client.py", line 165, in __init__
    self._custom_adapter = SSHHTTPAdapter(
  File "/usr/lib/python3/dist-packages/docker/transport/sshconn.py", line 84, in __init__
    self._connect()
  File "/usr/lib/python3/dist-packages/docker/transport/sshconn.py", line 93, in _connect
    self.ssh_client.connect(
  File "/usr/lib/python3/dist-packages/paramiko/client.py", line 340, in connect
    to_try = list(self._families_and_addresses(hostname, port))
  File "/usr/lib/python3/dist-packages/paramiko/client.py", line 203, in _families_and_addresses
    addrinfos = socket.getaddrinfo(
  File "/usr/lib/python3.8/socket.py", line 918, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known

有什么方法可以连接吗?

更新

如果我使用

DOCKER_CERT_PATH=~/.ssh/google_compute_engine DOCKER_HOST="ssh://hostname" docker-compose up -d                 

我收到了错误

Traceback (most recent call last):
  File "/usr/bin/docker-compose", line 11, in <module>
    load_entry_point('docker-compose==1.25.0', 'console_scripts', 'docker-compose')()
  File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 72, in main
    command()
  File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 125, in perform_command
    project = project_from_options('.', options)
  File "/usr/lib/python3/dist-packages/compose/cli/command.py", line 59, in project_from_options
    tls_config=tls_config_from_options(options, environment),
  File "/usr/lib/python3/dist-packages/compose/cli/docker_client.py", line 81, in tls_config_from_options
    return TLSConfig(
  File "/usr/lib/python3/dist-packages/docker/tls.py", line 80, in __init__
    raise errors.TLSParameterError(
docker.errors.TLSParameterError: Path to a certificate and key files must be provided through the client_config param. TLS configurations should map the Docker CLI client configurations. See https://docs.docker.com/engine/articles/https/ for API details.

【问题讨论】:

    标签: docker ssh paramiko


    【解决方案1】:

    知道了!

    我必须这样做

    ssh-agent zsh (or bash)
    ssh-add -k ~/.ssh/google_compute_engine
    

    然后

    DOCKER_HOST="ssh://ubuntu@REDACTED" docker-compose up -d

    【讨论】:

      猜你喜欢
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 2012-05-18
      相关资源
      最近更新 更多